我有一个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
表格中,我在字段id
和users
表格中有群组ID,我在字段group_id
中有用户及其群组ID
我在SQL方面不太好,所以也许我犯了一些非常愚蠢的错误。如果您能提供帮助,请提前感谢您。
答案 0 :(得分:4)
COUNT(*)
计算行。你想计算匹配数,所以从第二个表开始计算:
SELECT G.id, COUNT(u.group_id) as user_count
. . .
换句话说,LEFT JOIN
在没有匹配时返回一行。对于NULL
表中的所有列,该行的值为users
。