有表letter,字段letterID,UserID,date,其中letterID为主键(自增的),要找出UserID不相同而且date日期为最晚的列。
如果用 select * from letter group by UserID order by date是分组了以后再排序的,不符合要求。

解决方案 »

  1.   

    select a.* from tt a
    inner join
    (select UserID,max(`date`) as ma from tt) b
    on a.UserID=b.UserID and a.`date`=b.ma
      

  2.   


    select a.* from tt a
    inner join
    (select UserID,max(`date`) as ma from tt) b
    on a.UserID=b.UserID and a.`date`=b.ma
    就这么滴。
      

  3.   

    参考下贴中的多种方法(N=1)http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  4.   

    其中的一种方法。select * from letter a
    where not exists (select 1 from letter where UserID=a.UserID and date>a.date)
      

  5.   

    越来越感觉SQL命令的功能,比vfp本身的功能强大
      

  6.   

    本身select UserID,max(`date`) as ma from tt这个都是错误的吧,晕
      

  7.   

    select a.* from tt a
    inner join
    (select UserID,max(`date`) as ma from tt group by UserID) b
    on a.UserID=b.UserID and a.`date`=b.ma