登录表,查询登录过的用户名
select username
from system_online_users
group by username;
简单查询每个用户最后的登录时间
select username, max(login_time)
from system_online_users
group by username;
查询 admin
最早和最后的登录时间
select username, min(login_time) min_login_tiem, max(login_time) max_login_tiem
from system_online_users
where username = 'admin'
group by username;
如图:
多查询了昵称,在 group by
需要添加 nickname
select username, max(login_time), nickname
from system_online_users
group by username, nickname;
不想在 group by
中添加 nickname
,可以在查询时直接写 max(nickname)
前提是要保证 username
和 nickname
的唯一性
但是这种做法不太友好,可能用户中途修改了昵称,导致查询的昵称可能存在不是最新昵称的情况
select username, max(login_time), max(nickname)
from system_online_users
group by username;
强烈推荐,使用内联查询,可以不用写多个 group by
,想要查多个字段也不用写 max()
select t.username, t.login_time, t.nickname, t.ip, t.os
from system_online_users t
inner join (select username, max(login_time) login_time from system_online_users group by username) t1
on t.username = t1.username and t.login_time = t1.login_time;