select * from 你的表 tem where 时间=(select max(时间) from 你的表 where 人名=tem.人名)

解决方案 »

  1.   

    select * from 你的表 tem where 时间=(select max(时间) from 你的表 where 人名=tem.人名 and 分类=tem.分类)
      

  2.   

    大力,就是说在留言表里有userid,typeid(分类号),怎么写语句选出各个最新?
      

  3.   

    try:
    --留言版
    create table #lyb
    (
    userid int,
    typeid int,
    sj     datetime
    )--测试数据
    insert #lyb values(1,1,'2003-01-01 12:30:10')
    insert #lyb values(1,1,'2003-01-01 18:21:00')
    insert #lyb values(2,1,'2003-01-01 15:12:20')
    insert #lyb values(1,2,'2003-01-01 08:01:00')
    insert #lyb values(2,2,'2002-01-01 09:30:30')
    insert #lyb values(2,2,'2003-01-01 21:20:32')
    insert #lyb values(3,3,'2003-01-11 14:58:11')
    --实现
    select a.typeid,
           a.userid,
           a.sj
    from #lyb a join #lyb b 
    on a.typeid = b.typeid and a.userid = b.userid
    group by a.userid,a.typeid ,a.sj
    having count(case when a.sj <= b.sj then 1 else null end) < = 1 --可动态修改
    order by a.typeid,a.userid,a.sj 
    --你可以以动态的修改: n  <= n 来获得
    --版块有留言的人,各自最新的n条留言!
      

  4.   

    补充一点:
    当表中有多天的记录的时候!
    可以加
    where convert(varchar,sj,112) = '20031118'
    保证查询一天中的数据