Sql 此查询中的错误是什么?

Sql 此查询中的错误是什么?,sql,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; 非常感谢,很抱歉我的英语不好 如果不使用group by子句,则不能将常规列选择与聚合函数(如count())混合使用。这很有效 SELECT U.user_name, COUNT(*) AS fav_coun

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

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
子句,则不能将常规列选择与聚合函数(如
count()
)混合使用。这很有效

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用户名进行分组。请将查询更改为:

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
这解决了两个问题:

  • 您需要使用
    groupby
    获取每用户计数

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


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

    “工作不正常”是一个非常模糊的问题。在将来,描述它做了什么是错误的,或者你得到了什么错误。(在实践中,这将使错误——一个缺少分组的子句——非常明显)。