仅列出唯一身份用户

时间:2017-05-03 10:03:02

标签: sql firebird firebird1.5

表格为users,列数为user_idfirstnamelastnamearea

另一个表格为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,但登录次数不同。我想只看到最新的登录信息。

1 个答案:

答案 0 :(得分:2)

看起来字段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

对于LOGON的每次发生,您都会获得最新的u.FIRSTNAME, u.LASTNAME, u.PHONE_ID

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