在ORDER BY子句中无效,因为它不包含在聚合函数或GROUP BY子句中

问题描述:

我搜索了有关此错误的信息,并修改了我的查询并在集合函数中使用了按列排序。 可能是由于较少的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

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 

不包括在所选择的那些列...我会改变ORDER BY是要么集合列:

ORDER BY MAX(share.id) DESC 

或选择列中的索引:

ORDER BY 1 DESC