我要查询出shop视图里的5条记录,但是里面的Expr4字段的数据有重复的,怎么查询出不重复的呢?我用了select top 5 contid,usernumber,distinct(expr4) from shop order by addtime desc 是不对的 应该怎么写呀?
请教各位呀.!

解决方案 »

  1.   

    select top 5 contid,usernumber,expr4 
    from shop t
    where not exists(select 1 from shop where expr4=t.expr4 and addtime>t.addtime)
    order by addtime desc 
      

  2.   

    select
     top 5 contid,usernumber,expr4 
    from
     shop t
    where
     addtime=(select max(addtime) from shop where expr4=t.expr4)
    order by
     addtime desc 
      

  3.   

    select top 5 contid,usernumber,expr4
    from shop 
    group by contid,usernumber,expr4
    order by addtime desc上2楼的方法挺好
      

  4.   

    select top 5  contid,usernumber,expr4 from(
    select contid,usernumber,expr4,ROW_NUMBER() over(partition by contid,usernumber order by addtime desc ) as rn  from shop 
    ) a where rn=1
      

  5.   

    select top 5 t.* from shop t where addtime = (select max(addtime) from shop where expr4 = t.expr4) order by addtime desc
    select top 5 t.* from shop t where not exists (select 1 from shop where expr4 = t.expr4 and addtime > t.addtime) order by addtime descselect top 5 t.* from shop t where addtime = (select min(addtime) from shop where expr4 = t.expr4) order by addtime desc
    select top 5 t.* from shop t where not exists (select 1 from shop where expr4 = t.expr4 and addtime < t.addtime) order by addtime desc
      

  6.   

    2楼的方法有缺点,当addtime和expr4  有相同的时候会返回多条记录,其他的所有的where语句用相关子查询的都有类似的问题,仅以提示……