对不起我的英文,我使用谷歌翻译......
我有一张这样的表:
id | name | number
----------------------
- 1 | John | 110
- 2 | Carl | 95
- 3 | Carl | 213
- 4 | Jesus | 4
- 5 | John | 112
- 6 | Jesus | 87
- 7 | Carl | 9
我想得到这样的东西..
id | name | number
----------------------
- 3 | Carl | 213
- 5 | John | 112
- 6 | Jesus | 87
任何人都可以帮助我吗?
由于
答案 0 :(得分:0)
您没有指定正在使用的数据库,但是,您可以使用子查询为每个max(number)
返回name
,然后将其加回到您的表中以获得最终结果:
select
t1.id,
t1.name,
t1.number
from yourtable t1
inner join
(
select max(number) number, name
from yourtable
group by name
) m
on t1.name = m.name
and t1.number = m.number;
见SQL Fiddle with Demo。这将返回与id
关联的max(number)
。如果您的数据库支持窗口函数,那么您可以使用row_number()
:
select id, name, number
from
(
select id, name, number,
row_number() over(partition by name
order by number desc) seq
from yourtable
) m
where seq = 1;