首页 > 解决方案 > 在 MySQL 中使用 Group by 和 Order by

问题描述

为什么此 SQL 查询显示语法错误:

SELECT orderNumber, SUM(quantityOrdered) AS 'Total'
FROM orderdetails
GROUP BY orderNumber
ORDER BY quantityOrdered;

但是下面的查询没有显示语法错误并给出正确的结果:

SELECT orderNumber, SUM(quantityOrdered) AS 'Total'
FROM orderdetails
GROUP BY orderNumber
ORDER BY Total;

标签: mysqlsqlgroup-bysql-order-by

解决方案


这个查询:

SELECT od.orderNumber, SUM(od.quantityOrdered) AS Total
FROM orderdetails od
GROUP BY od.orderNumber
ORDER BY od.quantityOrdered;

是指从句中quantityOrderedORDER BY但是,ORDER BY只能在数据聚合后才能操作。因此,每一行都quantityOrdered为每一行汇总了多个。SQL 不知道你指的是哪一个——你会得到一个错误。

例如,您的数据可能是:

A     1
A     5
B     3

聚合后的样子:

A     6
B     3

没有quantityOrdered,只有Total

要解决此问题,您可以使用列别名或聚合函数:

ORDER BY SUM(od.quantityOrdered);

推荐阅读