例如,在以下的表中
ID     Data_1    Data_2   Data_3
-------------------------------------
1         A         X       X
2         A         X       X
3         B         X       X
4         B         X       X
5         C         X       X我想选出data_1中为B且ID最大的记录,这个sql语句该怎么写呢?
刚学sql,用起来真的不太会,希望大家帮忙
:-)

解决方案 »

  1.   

    select * from test where ID=(
    select max(ID) from  test where data_1 = 'B')
      

  2.   

    select * from test where id in (select max(id) from test group by data_1)
      

  3.   

    select t.id,t.data_1,t.data_2,t.data_3 
        from (select id,data_1,data_2,data_3,
                row_number() over(partition by data_1 order by id desc) r from test) t
    where t.r = 1
    order by t.data_1
    1.这是oracle中分区排序,不仅可以得到最大,还可以得到第二大,第三大...
    2.*一般用于测试,在实际SQL语句时最好不用,对性能不好。
    五一快乐!
      

  4.   

    select * from test where ID=( 
    select max(ID) from  test where data_1 = 'B')
      

  5.   

    select * from test where ID=( 
    select max(ID) from  test where data_1 = 'B')