我有一张桌子:
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
Run Code Online (Sandbox Code Playgroud)
我查询:
SELECT * FROM TABLE ORDER BY amount DESC group by userid
Run Code Online (Sandbox Code Playgroud)
我明白了:
ID | User | Amount
1 | 1 | 50
2 | 1 | 80
Run Code Online (Sandbox Code Playgroud)
但我期待:
ID | User | Amount
9 | 2 | 300
8 | 1 | 150
Run Code Online (Sandbox Code Playgroud)
我的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |