[英]MySQL group by with MAX not working as expected?
我有一張桌子:
ID | User | Amount
1 | 1 | 50
2 | 1 | 80
3 | 2 | 80
4 | 2 | 100
5 | 1 | 90
6 | 1 | 120
7 | 2 | 120
8 | 1 | 150
9 | 2 | 300
我查詢:
SELECT * FROM TABLE ORDER BY amount DESC group by userid
我得到這個:
ID | User | Amount
1 | 1 | 50
2 | 1 | 80
但是我期待着:
ID | User | Amount
9 | 2 | 300
8 | 1 | 150
我的SQL有什么問題?
分組時,必須對所有未按分組的列使用諸如max()
類的聚合函數
select t.*
from table t
inner join
(
SELECT userid, max(amount) as total
FROM TABLE
group by userid
) x on x.userid = t.userid and x.total = t.amount
ORDER BY t.amount DESC
另一種解決方案。使用FIND_IN_SET
子句檢查SQL Fiddle
SELECT
ua.*
FROM user_amount ua
WHERE FIND_IN_SET(ua.amount,(SELECT
MAX(ua1.amount)
FROM user_amount ua1
WHERE ua1.user = ua.user)) > 0
ORDER BY amount desc;
使用IN
子句
SELECT
ua.*
FROM user_amount ua
WHERE ua.amount IN (SELECT
MAX(ua1.amount)
FROM user_amount ua1
WHERE ua1.user = ua.user)
ORDER BY amount desc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.