这个查询中的错误是什么?

时间:2013-06-25 16:40:19

标签: sql

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

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 个答案:

答案 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

这解决了两个问题:

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

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

答案 3 :(得分:0)

在select sum(),count(),avg(),max()

中使用此命令时必须使用group by