-1

我不知道为什么这个查询不能正常工作,因为我找不到错误

SELECT U.user_name, 
  COUNT(*) AS fav_count 
FROM Users AS U 
LEFT JOIN Favorites AS F 
  ON F.user_id = U.user_id;

非常感谢你,对不起我的英语不好!

4

4 回答 4

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
于 2013-06-25T16:41:00.483 回答
1

你没有按U.user_name

于 2013-06-25T16:41:37.983 回答
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

这解决了两个问题:

  1. 您需要使用GROUP BY来获取每个用户的计数。

  2. COUNT()表达式中,您应该在表中指定一列,LEFT JOIN以便不计算空行。否则,您将获得fav_count = 1没有收藏夹的用户。

于 2013-06-25T16:48:49.103 回答
0

在 select sum(),count(),avg(),max() 中使用此命令时必须使用 group by

于 2013-06-25T19:27:48.853 回答