2015-11-07 181 views
1

我搜索了有關此錯誤的信息,並修改了我的查詢並在集合函數中使用了按列排序。 可能是由於較少的sql知識我無法捕捉到這個錯誤的確切含義。在ORDER BY子句中無效,因爲它不包含在聚合函數或GROUP BY子句中

我有以下我的表列:

  • [ID]
  • [POST_ID]
  • [USER_ID]
  • [photo_id]
  • [photo_group_id]
  • [album_id]

我的查詢:

SELECT TOP 3 MAX(share.id) as share_id, share.user_id 
FROM share 
WHERE share.post_id = 5468 
GROUP BY share.user_id 
ORDER BY share.id desc 

我使用ORDER BY聚合函數列已經它仍然顯示

列 「share.id」 是無效的ORDER BY子句,因爲它 不包含在聚合函數或GROUP BY 子句中。

任何幫助將不勝感激。 :)

+1

您不能通過share.id命令,因爲您說MAX(share .id)作爲share_id,因此您必須通過share_id而不是share.id來訂購。如果解決這個問題,請回答。 – jroyce

回答

2

share.id無效,因爲您在select語句中使用了別名。

嘗試使用share_id,而不是像這樣:

SELECT TOP 3 MAX(share.id) as share_id, share.user_id 
FROM share 
WHERE share.post_id = 5468 
GROUP BY share.user_id 
ORDER BY share_id DESC 
5

不包括在所選擇的那些列...我會改變ORDER BY是要麼集合列:

ORDER BY MAX(share.id) DESC 

或選擇列中的索引:

ORDER BY 1 DESC 
相關問題