创建一个视图,查询的时候发现有两条数据都是学生A的,其中一个字段S_ID老的记录值为1,新纪录S_ID=2,如何写视图只查询到S_ID=2的那条记录?

解决方案 »

  1.   

    按s_id做个逆序,取序号为一得.
      

  2.   

    select * from 
    (select t.*,row_number()over(partition by t.stu_num order by t.s_id desc) rn from view t) where rn=1;
    或者用not exists
    select * from view t where not exists(select 1 from view s
    where t.stu_num=s.stu_num and t.s_id<s.stu_num)
      

  3.   


    select * from 
    (select t.*,row_number() over(partition by stuid order by S_ID desc) rn
     from viewname)
    where rn=1