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
请问此语句怎么写?因为这张表很大 考虑到效率问题 如何解决呢?
-------------------
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 userid,max(time) as ma from tt group by userid) b
on a,userid=b.userid and a.time=b.ma
select a.* from tt a where not exists(select 1 from tt where userid=a.userid and a.time<time)
select t.* from tb t where ID = (select max(ID) from tb where userid = t.userid )
分组取最大N条记录方法征集
select id, max(time) from tableName group by userid这样你事试一试 在我这里是好用的好用的话记的结帖