背景:用户浏览一个信息后会把此信息ID(如CoID)和此用户ID(如UserID)的信息保存成一条记录(有自增长字段);问题描述:现需要取6条最近浏览的信息,但是很多用户可能同时浏览同一条信息,单靠top是不行了,因为top之后出来的可能会是同样的6条信息;但是distince CoID 信息之后是排序好的CoID,还是不符合要求;希望:如果distince CoID 后,CoID还是原来的按照插入数据库时的排序就好了;另外应该还有其他办法,希望朋友们给点建议!谢谢!

解决方案 »

  1.   

    select
     top 6 *
    from
    (select * from tb t where not exists(select 1 from tb where CoID=t.CoID and id<t.id) order by id desc)
      

  2.   

    select
     top 6 *
    from
    (  
      select 
         * 
       from
         tb t 
       where 
          not exists(select 1 from tb where CoID=t.CoID and id<t.id) order by id desc))t
      

  3.   

    SELECT TOP 6 * FROM 
    (SELECT * FROM TB T WHERE TIME=(SELECT MAX(TIME) FROM TB WHERE COID=T.COID))AS T ORDER BY TIME DESC
      

  4.   

    SELECT TOP 6 * 
    FROM 
    (SELECT * FROM TB T WHERE TIME=
    (SELECT MAX(TIME) FROM TB WHERE COID=T.COID))AS T 
    ORDER BY TIME DESC
      

  5.   

    很好很强大,SQL77能说一下为什么吗?