解决方案 »

  1.   

    如果你想只取得某一个用户的最后记录信息,如下:select top 1 * from logs where userid = @id order  by logdate desc 
    如果想得到所有用户的最后的记录信息,如下:
    select * from 

    select * , row_number() over(partition by userid order  by logdate desc ) as rn from logs
    ) x 
    where rn = 1 
      

  2.   

    参考下贴中的多种方法http://blog.csdn.net/acmain_chm/article/details/4126306
    [征集]分组取最大N条记录方法征集,及散分...
      

  3.   


    问下。呢个,row_number() over是什么?还有partition 是什么?
    我需要根据所有用户ID查询在某一个操作时间段内的最后一行。
      

  4.   

    over() 是一个关键字,括号里面的内容,基本上就是 partition by 和 order by 两个子句partition by ,从字面上讲是分区的意思,可以理解为分组的意思,就比如你的记录表中有 10 个人,最后要实现的效果就是每个的记录都是从1开始,张三1,张三2,张三100。 李四1 , 李四2  道理一样。order by ,是张三自己有10 条记录,哪条是张三1,哪条是张三 10 ,就是按这个排序。不知道是不是,说明白了没有。我需要根据所有用户ID查询在某一个操作时间段内的最后一行。-- 查所有用户,就用这个。
    select * from 

    select * , row_number() over(partition by userid order  by logdate desc ) as rn from logs 
    where .... -- 这里可以加上你的时间段的条件。
    ) x 
    where rn = 1