选择MAX字段而不重复另一个

时间:2013-11-19 17:08:31

标签: php sql

对不起我的英文,我使用谷歌翻译......

我有一张这样的表:

  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

任何人都可以帮助我吗?

由于

1 个答案:

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

请参阅SQL Fiddle with Demo