PostgreSQL 查询每个用户最后的登录时间多种方法

登录表,查询登录过的用户名

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)

前提是要保证 usernamenickname 的唯一性

但是这种做法不太友好,可能用户中途修改了昵称,导致查询的昵称可能存在不是最新昵称的情况

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;

你可能感兴趣的:(#,PostgreSQL,postgresql,数据库)