使用any_value后也得到错误表达式#1的ORDER BY子句不在GROUP BY子句中,并且包含非聚合列



我在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

最新更新