我有表 orders
,其中包含字段 id
、customer_id
和 amt
:
我想得到 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/