仅列出唯一用户

List only unique users

Table 为 users,列为 user_idfirstnamelastnamearea.

另一个table是user_sessions,列是user_idlogonlogoff

查看谁登录我使用

select u.FIRSTNAME, u.LASTNAME, u.PHONE_ID, us.LOGON 
from USERS u 
    join USER_sessions us on u.USER_ID=us.user_id 
where cast (us.LOGON as date) = date 'now' 
and us.LOGOFF is null 
order by u.FIRSTNAME

结果是正确的,但有时我会得到重复的条目。

例如,相同的firstnamelastname,但不同的登录。我只想看到最新的登录。

看起来字段LOGON是一种时间戳类型的字段;你的问题不是很准确。

所以,我想,你想要 LOGON 的最大值。为此,有一个聚合函数 MAX() 必须与 GROUP BY.

一起使用
select u.FIRSTNAME, u.LASTNAME, u.PHONE_ID, MAX(us.LOGON)
  from USERS u 
  join USER_sessions us
    on u.USER_ID = us.user_id 
  where cast (us.LOGON as date) = date 'now' 
    and us.LOGOFF is null
  group by u.FIRSTNAME, u.LASTNAME, u.PHONE_ID 
  order by u.FIRSTNAME

每次出现 u.FIRSTNAME, u.LASTNAME, u.PHONE_ID 时,您都会获得最新的 LOGON

请注意,您可以使用 current_date 上下文变量而不是 date 'now' 强制转换。