我不知道爲什麼這樣的查詢工作不正常,因爲我無法找到錯誤這是此查詢中的錯誤?
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子句 - 非常明顯)。 –