在MySQL中使用Group by和Order by

时间:2018-08-04 13:59:48

标签: mysql sql group-by sql-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;

3 个答案:

答案 0 :(得分:2)

此查询:

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

quantityOrdered子句中引用ORDER BY。但是,ORDER BY仅可在数据汇总后 进行操作。因此,每一行总结了每一行的多个quantityOrdered。 SQL不知道您的意思是-您会收到一个错误。

例如,您的数据可能是:

A     1
A     5
B     3

聚合之后,它看起来像:

A     6
B     3

没有quantityOrdered,只有Total

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

ORDER BY SUM(od.quantityOrdered);

答案 1 :(得分:0)

ORDER BY Total更改为ORDER BY SUM(quantityOrdered)

答案 2 :(得分:0)

我认为查询结果中没有名称为quantityOrdered的列。结果的第二列是函数SUM的结果,该函数与原始列quantityOrdered不同。这就是为什么当您为该结果AS 'Total'使用别名时会起作用的原因。