我试图让客户支付最高金额。它给了我最大数量但错误的客户。我该怎么办?
SELECT temp.customerNumber, MAX( temp.max ) AS sum
FROM (
SELECT p.customerNumber, p.amount AS max
FROM payments p
GROUP BY p.customerNumber
) AS temp
答案 0 :(得分:2)
我认为你不需要子查询:
SELECT p.customerNumber, MAX(p.amount) AS max
FROM payments p
GROUP BY p.customerNumber
ORDER BY max DESC
LIMIT 1
答案 1 :(得分:0)
请考虑您的子选择将返回类似
的内容customerNumber amount
1 100
2 200
然后,外部查询将提取这些客户编号和所有行的MAX,从而打破客户编号与其各自金额之间的链接。您迫使所有组中的LARGES金额应用于所有组:
cN amount
1 200
2 200
答案 2 :(得分:0)
使用连接,可能如下: -
SELECT *
FROM payments
INNER JOIN
(
SELECT MAX(amount) AS MaxAmount
FROM payments
) Sub1
ON payments.amount = Sub1.MaxAmount
这方面的缺点是如果两个人都有相同的高额付款,那么两者都将被退回。