+-

我有一个SQL查询来获取每个组的用户数,并按它们对所有组进行排序.但不幸的是,sql认为user_count实际上为0时为1.如果用户数大于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中具有组ID,在users表中,我在用户group_id中具有具有其组ID的用户
我的SQL不太好,所以也许我犯了一些非常愚蠢的错误.预先感谢您的帮助.
最佳答案
COUNT(*)对行进行计数.您要计算匹配数,因此从第二个表开始计算:
SELECT G.id, COUNT(u.group_id) as user_count
. . .
换句话说,当没有匹配项时,LEFT JOIN返回一行.对于用户表中的所有列,该行的值为NULL.
点击查看更多相关文章
转载注明原文:MySql COUNT(*)返回1而不是0 - 乐贴网