首页 > sql 查询问题

sql 查询问题

我有一张表A(time,userid,column1,column2,column3),
由于历史原因,A中出现了很多历史数据,就是同一个userid会有很多记录,time表示时间(精确度:天),一个用户一天会有一条记录,但是其他字段又各不相同,例如:

time userid col1 col2 col3 ...
2014-04-01 u1 v1 v2 v3
2014-04-02 u1 v1' v2' v3'
2014-04-03 u1 v1'' v2'' v3''
2014-04-04 u1 v1''' v2''' v3'''
2014-04-01 u2 m1 m2 m3
2014-04-02 u2 m1' m2'' m3'
2014-04-03 u2 m1'' m2'' m3'''

现在我得到了userid的一个集合,怎么查这些userid的历史记录中时间最大的记录呢,如集合userids(u1, u2),要得到如下:
2014-04-04 u1 v1''' v2''' v3'''
2014-04-03 u2 m1'' m2'' m3'''


sqlselect aa.* from (select * from A where A.userid in (u1, u2)) aa inner join (
   select max(time) as max_time, userid from A where A.userid in (u1, u2) group by userid
  ) b 
   where 
     aa.userid = b.userid 
     and aa.time = b.max_time

没有去验证,可能有语法问题


答案更新了下, 优化 sql

【热门文章】
【热门文章】