mysql - 在 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;
解决方案
这个查询:
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);
推荐阅读
- python - 频道未在类别 Discord.py 中创建
- javascript - 使用 API 更改值
- python - 如何获取列表中具有特定值的最后一个元素
- python - 与字典值相比,按列值过滤DataFrame?
- c# - 获得了错误的感兴趣区域 ROI
- swift - 是否可以在 xCode 设置中更改应用商店产品的 productId?
- ssh - 无法从 Oracle 云中服务器上的 localhost 打开隧道网站
- react-native - 如何使用深度链接管理 Expo 托管应用通知点击事件?
- docker - Nextcloud fpm docker 镜像,支持 ldap
- android - 文本字符串必须在 Text React Native 中呈现