我有一张这样的桌子......
username action time
user1 login 00.00.00
user1 logout 01.00.00
user2 login 02.00.00
我想在02.00.00选择每个用户名的最后一个操作,所以它必须是这样的..
user1 logout
user2 login
我试过这个,但看起来还没完成。
select (distinct username), action from log where date(time) <= '02.00.00'
提前谢谢你。
答案 0 :(得分:1)
您可以在子查询中找到每个用户的最长时间,并将内部表连接到主表中,如下所示:
select a.*
from log a
inner join (
select username, max(time) time
from log
where time <= '02.00.00'
group by username
) b on a.username = b.username
and a.time = b.time;
这里要注意的一件事是,如果有多个行具有相同的最大时间,则查询将显示所有这些行。
答案 1 :(得分:0)
使用子查询
select username,action from log where time in( select max(time) from log group by username);
使用时间段:
select username,action from log where time in( select max(time) from log group by username having time < '2.00.00');
答案 2 :(得分:0)