table 
id   user_id  name  stattime向这个表里  插入 N 条记录user_id  可能重复。
stattime 为插入时间。。现在需要取出 最新插入的 10条 记录,并且user_id 不能够重复,重复就取最新的一条select distinct user_id from table order by stattime desc limit 10
这样取出来的 结果是正确的。但只能够得到字段 user_id。我需要得到所有字段。select * from table group by user_id order by tattime desc limit 10
这样得到的排列结果和上面的不一样请问这样怎么样写SQL语句。 才能够得到第一种排序的所有字段
PS: 
select distinct user_id from table order by stattime desc
select * from table group by user_id order by tattime desc如果取所有 两种方法的排序都是一样的 。但只取10条 就不一样!!!!! 

解决方案 »

  1.   


    select 
    top 10

    from table1 t 
    where 
    not exists(select 1 from table1 where [User_id]=t.[User_id] and stattime>t.stattime) 
    order by stattime desc 
      

  2.   

    select 
    top 10

    from 
    table1 t 
    where 
    stattime=(select max(stattime) from table1 where [User_id]=t.[User_id] ) 
      

  3.   

    select 
        top 10
        * 
    from 
        table1 t 
    where 
        stattime=(select max(stattime) from table1 where [User_id]=t.[User_id] ) 
    order by stattime desc
    ------select 
    top 10
    [user_id]

    from 
    table1 t 
    where 
    stattime=(select max(stattime) from table1 where [User_id]=t.[User_id] ) 
    group by [user_id]
    order by  stattime desc
      

  4.   


    select * 
    from table1 t 
    where 
        not exists(select 1 from table1 where [User_id]=t.[User_id] and stattime>t.stattime) 
    order by stattime desc 
    limit 10