我不知道为什么这样的查询工作不正常,因为我无法找到错误这是此查询中的错误?
SELECT U.user_name,
COUNT(*) AS fav_count
FROM Users AS U
LEFT JOIN Favorites AS F
ON F.user_id = U.user_id;
非常感谢你,为我的英语不好对不起!
我不知道为什么这样的查询工作不正常,因为我无法找到错误这是此查询中的错误?
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.user_name
更改查询分组到:
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
。
必须在选择和(使用此命令时使用group by),COUNT(),AVG(),MAX()
“工作不正常” 是一个非常模糊的问题。在将来,请描述它做错了什么,或者你得到了什么错误。 (实际上,这会导致错误 - 缺少GROUP BY子句 - 非常明显)。 –