MySql COUNT(*)返回1而不是0

时间:2018-02-16 14:55:30

标签: mysql sql database

我有一个sql-query来获取每个组的用户数,并按他们对所有组进行排序。但遗憾的是,sql认为user_count为1,实际上它必须为0.如果用户数大于0,则它采用正确的值。

这是我的SQL查询:

SELECT G.id, COUNT(*) user_count
FROM groups G LEFT JOIN
     users U
     ON G.id = U.group_id
GROUP BY G.id
ORDER BY user_count

groups表格中,我在字段idusers表格中有群组ID,我在字段group_id中有用户及其群组ID

我在SQL方面不太好,所以也许我犯了一些非常愚蠢的错误。如果您能提供帮助,请提前感谢您。

1 个答案:

答案 0 :(得分:4)

COUNT(*)计算。你想计算匹配数,所以从第二个表开始计算:

SELECT G.id, COUNT(u.group_id) as user_count
. . .

换句话说,LEFT JOIN在没有匹配时返回一行。对于NULL表中的所有列,该行的值为users