MySQL Error number: 3066; Symbol: ER_AGGREGATE_IN_ORDER_NOT_SELECT; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释

Error number: 3066; Symbol: ER_AGGREGATE_IN_ORDER_NOT_SELECT; SQLSTATE: HY000

Message: Expression #%u of ORDER BY clause is not in SELECT list, contains aggregate function; this is incompatible with %s

错误说明

ER_AGGREGATE_IN_ORDER_NOT_SELECT错误是MySQL返回的一种数据库错误,表明您在SELECT子句中使用了SQL聚合函数(例如SUM,AVG,MIN和MAX),但ORDER BY子句中没有包含它们。ORDER BY子句仅用于查询指定的行而不是聚合操作。

常见案例

ER_AGGREGATE_IN_ORDER_NOT_SELECT错误最常见的案例是,当您试图执行SELECT查询时,其ORDER BY子句中使用SQL聚合函数而不是表中的列时,可能会出现此错误。例如,如果您尝试使用以下查询执行查询,则可能会得到此错误

SELECT id,size, sum(price)

FROM orders

ORDER BY sum(price);

解决方法

要解决ER_AGGREGATE_IN_ORDER_NOT_SELECT错误,首先需要确保ORDER BY子句中不使用聚合函数。SQL不允许您使用聚合函数来对查询的结果进行排序,因为排序涉及每一行,而聚合函数只是对数据库中的所有行进行汇总。应该使用ORDER BY子句对表中的列进行排序,如例所示:

SELECT id,size, sum(price)

FROM orders

ORDER BY size;

请注意,如果要显示排序使用的聚合字段,可以使用HAVING子句,例如:

SELECT id, size, sum(price)

FROM orders

GROUP BY size

HAVING sum(price) > 10

ORDER BY size;

确保ORDER BY子句中不包含任何聚合函数以解决ER_AGGREGATE_IN_ORDER_NOT_SELECT错误,应该是解决此问题的最好方法。此外,可以使用HAVING子句来实现不使用聚合函数、但仍然显示聚合函数的效果。

香港美国云服务器首选树叶云,2H2G首月10元开通。
树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/288743.html<

(0)
运维的头像运维
上一篇2025-05-16 11:28
下一篇 2025-05-16 11:29

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注