日期:2014-05-16  浏览次数:20723 次

一个SQL查询问题,请教
id userid time  
-------------------
1 001 2010-03-01
2 001 2010-03-02
3 001 2010-03-03
4 001 2010-03-05
5 001 2010-03-11
6 001 2010-03-13
7 002 2010-03-03
8 002 2010-03-05
9 002 2010-03-13
10 002 2010-03-15
11 002 2010-03-21
12 002 2010-03-23
13 003 2010-04-03
14 003 2010-04-05
15 004 2010-04-08
16 004 2010-04-09
17 005 2010-04-11
18 005 2010-04-13


表结构如上。。。
我想从这张表中查出每个人最后登录时间(也可以说是几个userid中ID最大的记录)
得到如下结果
id userid time  
-------------------
6 001 2010-03-13
12 002 2010-03-23
14 003 2010-04-05
16 004 2010-04-09
18 005 2010-04-13


请问此语句怎么写?因为这张表很大 考虑到效率问题 如何解决呢?

------解决方案--------------------
select a.* from tt a inner join
(select userid,max(time) as ma from tt group by userid) b
on a,userid=b.userid and a.time=b.ma
------解决方案--------------------
参考下贴中的几方法。

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
分组取最大N条记录方法征集
------解决方案--------------------
刚刚回答弄错了


select id, max(time) from tableName group by userid

这样你事试一试 在我这里是好用的

好用的话记的结帖