为什么这给了我错误的customerNumber?

时间:2014-03-10 16:09:09

标签: mysql sql

我试图让客户支付最高金额。它给了我最大数量但错误的客户。我该怎么办?

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

3 个答案:

答案 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

这方面的缺点是如果两个人都有相同的高额付款,那么两者都将被退回。

相关问题