表格为users
,列数为user_id
,firstname
,lastname
,area
。
另一个表格为user_sessions
,列为user_id
,logon
,logoff
。
要查看谁登录,请使用
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
结果是正确的,但有时我会得到重复的条目。
例如,相同的firstname
和lastname
,但登录次数不同。我想只看到最新的登录信息。
答案 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'
强制转换。