我不知道为什么这个查询不能正常工作,因为我找不到错误
SELECT U.user_name,
COUNT(*) AS fav_count
FROM Users AS U
LEFT JOIN Favorites AS F
ON F.user_id = U.user_id;
非常感谢你,对不起我的英语不好!
我不知道为什么这个查询不能正常工作,因为我找不到错误
SELECT U.user_name,
COUNT(*) AS fav_count
FROM Users AS U
LEFT JOIN Favorites AS F
ON F.user_id = U.user_id;
非常感谢你,对不起我的英语不好!
您不能将普通列选择与聚合函数混合使用,例如count()
不使用group by
子句时。这有效
SELECT U.user_name, COUNT(*) AS fav_count
FROM Users AS U
LEFT JOIN Favorites AS F ON F.user_id = U.user_id
group by U.user_name
你没有按U.user_name
将查询更改为:
SELECT U.user_name, COUNT(F.user_id) AS fav_count
FROM Users AS U
LEFT JOIN Favorites AS F ON F.user_id = U.user_id
GROUP BY U.user_name
这解决了两个问题:
您需要使用GROUP BY
来获取每个用户的计数。
在COUNT()
表达式中,您应该在表中指定一列,LEFT JOIN
以便不计算空行。否则,您将获得fav_count = 1
没有收藏夹的用户。
在 select sum(),count(),avg(),max() 中使用此命令时必须使用 group by