此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;
答案 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'
使用别名时会起作用的原因。