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