为什么这个 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;
最佳答案
这个查询:
SELECT od.orderNumber, SUM(od.quantityOrdered) AS Total
FROM orderdetails od
GROUP BY od.orderNumber
ORDER BY od.quantityOrdered;
指的是 ORDER BY
子句中的 quantityOrdered
。但是,ORDER BY
只能在 数据聚合后进行操作。因此,每一行都为每一行汇总了多个 quantityOrdered
。 SQL 不知道你指的是哪一个——你会得到一个错误。
例如,您的数据可能是:
A 1
A 5
B 3
聚合后的样子:
A 6
B 3
没有quantityOrdered
,只有Total
。
要解决此问题,您可以使用列别名或聚合函数:
ORDER BY SUM(od.quantityOrdered);
关于mysql - 在 MySQL 中使用 Group by 和 Order by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51686331/