2012-03-17 84 views
2

嗨我得到試圖運行查詢時,此異常ORDER BY子句錯誤

,因爲它不是在聚合函數或 GROUP BY載列restaurantData.restaurantId是在選擇列表 無效條款。

查詢:

SELECT 
    T1.restaurantId AS ID, 
    COUNT(T2.post_id) AS favCount 
FROM 
    restaurantData AS T1 
INNER JOIN 
    favoriteData AS T2 ON T1.restaurantId = T2.post_id 
ORDER BY 
    favCount DESC, ID DESC 

它說,我必須添加未在ORDER BY條款彙總所有選擇列,這我已經做了restaurantID。但它仍然給我錯誤。

+2

錯誤消息顯示:「GROUP BY」,而不是「ORDER BY」 – 2012-03-17 16:14:00

回答

4

您在查詢中缺少GROUP BY T1.restaurantId

SELECT T1.restaurantId AS ID, 
     COUNT(T2.post_id) AS favCount 
FROM restaurantData AS T1 
     INNER JOIN favoriteData AS T2 
     ON T1.restaurantId = T2.post_id 
GROUP BY T1.restaurantId 
ORDER BY favCount DESC, 
      ID DESC 

如果你沒有GROUP BY條款都那麼這個讓你整個源表的集合(在這種情況下,包容restaurantId在選擇列表中無效,沒有包裝,在一個聚合),而不是分成你明顯渴望的餐廳團體。

4

您使用的聚合函數(COUNT),所以你必須使用一個GROUP BY條款以及:

SELECT 
    T1.restaurantId AS ID, 
    COUNT(T2.post_id) AS favCount 
FROM 
    restaurantData AS T1 
INNER JOIN 
    favoriteData AS T2 ON T1.restaurantId = T2.post_id 
GROUP BY 
    T1.restaurantID 
ORDER BY 
    favCount DESC, ID DESC 

基本上,你的查詢,你要算行發現 - 你想結果分組,每個restaurantId - 這就是GROUP BY子句表示的內容。