我搜索了这个错误并修改了我的查询,并在聚合函数中按列使用了我的订单。 可能是由于对sql知之甚少,我无法捕捉到这个错误的确切含义。
我的表中有以下列:
- [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
我在聚合函数中按列使用已经显示
列“share.id”在ORDER BY子句中无效,因为 它不包含在聚合函数或GROUP BY中 子句。
任何帮助将不胜感激。 :)
答案 0 :(得分:9)
列中没有包含SELECTed ...我会将ORDER BY更改为聚合列:
ORDER BY MAX(share.id) DESC
或select中的列索引:
ORDER BY 1 DESC
答案 1 :(得分:4)
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
答案 2 :(得分:0)
ORDER BY
发生在SELECT
之后。由于MAX(share.id)
中只有SELECT
,因此ORDER BY
只能使用已选择的内容。根本没有选择ORDER BY
来使用您的“ share.id”。
另一个问题是您在同一级别上有MAX(share.id)
和share.user_id
。必须通过GROUP BY和聚合函数更好地定义它们。