mysql - 在 MySQL 中使用 Group by 和 Order by

标签 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;

最佳答案

这个查询:

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/

相关文章:

sql-server - 表分组依据 - Sql -

MySQL Group By 取决于其他列值

php - “简单”mysql 查询需要 30 秒加载

sql - 如何在输出期间更改值名称

php代码来匹配数据库中的列日期并显示客户数据

php - WordPress 中的自定义表查询

sql - 为什么我们在数据库列中使用默认值和非空值?

python - 用于排列数据框的聚合函数

mysql - 如何使用 Zend DB 做 MySQL IN 子句?

mysql - 在 MySQL 中执行多个选择查询 - SQLyog