表table1有3个字段a,b,c,表内容如下:
1  2  'a'
1  3  'b'
1  4  'c'
2  5  'd'
2  6  'e'
2  7  'f'
3  1  'g'其中a字段可能重复
现在要得到内容是
1  4  'c'
2  7  'f'
3  1  'g'即在第一个字段相同时,取第二个字段中最大的那些记录
select a,max(b),c from table1 group by a
不合法.请问这样的sql如何写? thanks.

解决方案 »

  1.   

    select t1.a,t1.b,t1.c
      from table1 t1 
               inner join
           (seelct a,max(b) as b from table1 group by a) t2 
                on t1.a=t2.a and t1.b=t2.b
      

  2.   

    select distinct t1.a,t1.b,t1.c 
    from table1 t1,
     (select a,max(b) as b from table1 group by a) t2
    where t1.a =t 2.a and t1.b = t2.b
      

  3.   

    select a,b,c
    from(
    select a,b,c
           ,row_number()over(partition by a order by b desc) rn
    from table1

    where rn=1
    这样可能更快些!