我不知道为什么这个查询无法正常工作,因为我找不到错误
SELECT U.user_name,
COUNT(*) AS fav_count
FROM Users AS U
LEFT JOIN Favorites AS F
ON F.user_id = U.user_id;
非常感谢,对不起我的英语不好!
答案 0 :(得分:10)
如果不使用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
答案 1 :(得分:1)
您没有按U.user_name
答案 2 :(得分:1)
将查询更改为:
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
。
答案 3 :(得分:0)
在select sum(),count(),avg(),max()
中使用此命令时必须使用group by