我有一张表来记录人们登录系统的时间。每次用户成功登录时,都会使用用户名和登录时间创建新行 因此,用户可能会多次出现,例如在下表中Sam和Steve出现两次,因为他们在不同的日子登录。
+-----------+------------------+
| user_name | login_time |
+-----------+------------------+
| Sam | 2016-07-14 12:00 |
| Steve | 2016-07-13 09:30 |
| Sam | 2016-07-13 11:00 |
| Simon | 2016-07-14 09:00 |
| Albert | 2016-07-14 10:30 |
| Steve | 2016-07-11 09:00 |
+-----------+------------------+
我想查询此表以获取用户上次登录时的列表 正如您在下面的示例中所看到的,Sam和Steve的重复项被删除,只保留了最新的(最接近今天)登录时间。
+-----------+------------------+
| user_name | login_time |
+-----------+------------------+
| Sam | 2016-07-14 12:00 |
| Steve | 2016-07-13 09:30 |
| Simon | 2016-07-14 09:00 |
| Albert | 2016-07-14 10:30 |
+-----------+------------------+
我无法弄清楚如何做到这一点,我无法为此找到内置功能。<br/> 我以为我应该使用MAX()来选择最近的日期,但无法确定将其放在何处 我以为我可以在SELECT中使用SELECT来做到这一点,但没有成功。
如何为每个用户选择上次登录时间?
答案 0 :(得分:3)
聚合user_name并获取登录时间的max
值。
select user_name,max(login_time) as last_login
from users
group by user_name