在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 子句中。
任何帮助将不胜感激。 :)
答
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
您不能通过share.id命令,因为您说MAX(share .id)作为share_id,因此您必须通过share_id而不是share.id来订购。如果解决这个问题,请回答。 – jroyce