我在mysql查询中使用group by子句并获得非聚合列的错误,我不能从特权中禁用full_group_by,因为我使用共享主机,所以不能访问这个,所以我尝试了替代方式ANY_VALUE,但是使用这个,我也得到了同样的错误:Mysql查询
SELECT any_value(o.booking_id), any_value(o.id)id,any_value(u.name) as user_name,
FROM orders o
JOIN items ON items.id=o.product_id
JOIN users u ON u.id=o.user_id
JOIN payment p ON p.booking_id=o.booking_id
WHERE o.status =0
GROUP BY o.booking_id
ORDER BY o.id DESC
LIMIT 10
您的查询没有选择o.id
列,因此您不能按o.id
排序。
但它确实选择并返回列any_value(o.id)
,您可以使用:
ORDER BY any_value(o.id)
或其别名:
ORDER BY id
也不需要对包含在GROUP BY
子句中的列使用any_value()
:
SELECT o.booking_id, any_value(o.id)id,any_value(u.name) as user_name
FROM orders o
JOIN items ON items.id=o.product_id
JOIN users u ON u.id=o.user_id
JOIN payment p ON p.booking_id=o.booking_id
WHERE o.status =0
GROUP BY o.booking_id
ORDER BY id DESC
LIMIT 10