2013-06-25 34 views
-1

我不知道爲什麼這樣的查詢工作不正常,因爲我無法找到錯誤這是此查詢中的錯誤?

SELECT U.user_name, 
    COUNT(*) AS fav_count 
FROM Users AS U 
LEFT JOIN Favorites AS F 
    ON F.user_id = U.user_id; 

非常感謝你,爲我的英語不好對不起!

+1

「工作不正常」 是一個非常模糊的問題。在將來,請描述它做錯了什麼,或者你得到了什麼錯誤。 (實際上,這會導致錯誤 - 缺少GROUP BY子句 - 非常明顯)。 –

回答

10

當您不使用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 
1

你不是由U.user_name

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

0

必須在選擇和(使用此命令時使用group by),COUNT(),AVG(),MAX()