我有一张桌子:id group data
1 a 10
2 a 20
3 b 10
4 b 20
我想得到最大“数据”值按“组”分组的记录的id,即。id
2
4
最佳答案
便携式解决方案:
SELECT T1.id
FROM yourtable T1
JOIN (
SELECT grp, MAX(data) AS data
FROM yourtable
GROUP BY grp
) T2
WHERE T1.grp = T2.grp AND T1.data = T2.data
PostgreSQL解决方案:
SELECT DISTINCT ON (grp) id
FROM yourtable
ORDER BY grp, data DESC;
注:我将列名从
group
改为grp
,因为group
是一个保留字。如果你真的想使用group
你就得引用它。关于sql - SQL GROUP BY问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4667311/