如何获取MySQL中user_login表每个用户的最后登录记录?
获取用户最后登录时间的SQL解决方案
嗨,这个需求其实很容易实现,我们只需要利用SQL的聚合函数结合分组操作就能搞定。
核心思路
每个用户的登录记录会有多条,我们可以按userId分组,然后在每个分组里找出最大的tstamp值——这个最大值就是该用户的最后登录时间。
实现语句
SELECT userId, MAX(tstamp) AS last_login_time FROM user_login GROUP BY userId;
语句解释
MAX(tstamp):在每个用户的登录记录分组中,提取时间戳最大的那条,也就是最后一次登录的时间;用AS last_login_time给结果列起一个更直观的别名,方便后续使用。GROUP BY userId:确保我们按用户维度聚合数据,每个用户只会返回一条记录。
可选:添加时间范围过滤
如果你想只统计某日期之后有登录行为的用户的最后登录时间,可以结合你之前提到的WHERE条件:
SELECT userId, MAX(tstamp) AS last_login_time FROM user_login WHERE tstamp > '2017-10-01 00:00:00' GROUP BY userId;
举个实际例子,假设你的user_login表有以下数据:
| userId | tstamp |
|---|---|
| 1 | 2023-05-01 08:30:00 |
| 1 | 2023-05-03 14:15:00 |
| 2 | 2023-05-02 09:00:00 |
执行核心语句后,会得到结果:
| userId | last_login_time |
|---|---|
| 1 | 2023-05-03 14:15:00 |
| 2 | 2023-05-02 09:00:00 |
这样就完美得到了包含用户ID和最后登录时间的表格啦!
内容的提问来源于stack exchange,提问作者wwl
相关产品推荐
相关产品推荐

