mysql - 如何使用 MAX() 返回具有最大值的行?

标签 mysql sql

我有表 orders,其中包含字段 idcustomer_idamt:

SQL Fiddle

我想得到 customer_id 和这个 amt 的最大金额。

我做了查询:

SELECT customer_id, MAX(amt) FROM orders;

但此查询的结果包含一个错误的 customer_id 值。

然后我构建了这样的查询:

SELECT customer_id, MAX(amt) AS maximum FROM orders GROUP BY customer_id ORDER BY maximum DESC LIMIT 1;

得到了正确的结果。

但我不明白为什么我的第一个查询不能正常工作我做错了什么?

是否可以更改我的第二个查询,以更简单有效的方式为我获取必要的信息?

最佳答案

MySQL 将允许您在查询中保留 GROUP BY,从而返回整个表中的 MAX(amt)任意 customer_id。大多数其他 RDBMS 在使用聚合时需要 GROUP BY 子句。

我没有发现您的第二个查询有任何问题 - 还有其他方法可以做到这一点,但您的方法可以正常工作。

关于mysql - 如何使用 MAX() 返回具有最大值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215215/

相关文章:

MySQL group_concat 和计数

mysql - Ubuntu 上的 Mariadb 我为 CURRENT_USER 使用的用户是 root@% 而不是 root@localhost

mysql - 在不执行的情况下检测mysql错误

Mysql 每月分区 - 错误代码 : 1503 A PRIMARY KEY must include all columns in the table's partitioning function

mysql - 划分 COUNT 列时的 CAST 函数

php - 如何根据另一个表的列从一个表中选择列?

mysql - 使用MySql函数变量作为查询中的表名

mysqld 未知选项 '--initialize'

sql - 组合 SQL 插入和删除

mysql - 按优先级选择