举例
id c vid
=============
1 abc 2
2 hug 2
3 uuu 4
4 iji 8
.. ... ...
SELECT TOP 10 * FROM [ 表 ] ORDER BY [id] DESC现在选择的时候,不想在选择出来的记录中存在相同的vid,即没有重复的vid,应该怎么改写这个语句?

解决方案 »

  1.   

    SELECT * FROM [表] a
    where id in (select top 10 max(id) from 表 group by vid)
    ORDER BY [id] DESC
      

  2.   

    select * from tb where vid in (select top 10 distinct vid from tb)select * from tb where vid in (select top 10 vid from (select distinct vid from tb) t)
      

  3.   

    谢谢上面2位。另外问个问题。我这个页面主要用来列出项目的评论,也就是说  浏览量非常高。所以,想问下上面3种sql中哪种效率高一点?
      

  4.   

    SELECT * FROM [View_VideoComments] WHERE [VId] IN ( select top 10 distinct [VId] from [View_VideoComments] )消息 156,级别 15,状态 1,第 1 行
    关键字 'distinct' 附近有语法错误。
    =======================================select * from [View_VideoComments] where vid in (select top 10 vid from (select distinct vid from [View_VideoComments]) t)结果显示是全部的数据,包括vid有重复的项。
    =========================================
    SELECT * FROM [View_VideoComments]
    where cid in (select top 10 max(cid) from [View_VideoComments] group by vid)
    ORDER BY [vid] DESC可以运行。达到效果。
    ===========================================谢谢楼上2位。