求教:想用Sql查询出每个用户的最后的登录时间

oracle表中有以下3个字段, user_id(用户ID),login_time(登录时间),memo(备注)
想用Sql查询出每个用户的最后的登录时间,

恳请指教

3个回答

SELECT * FROM (
SELECT user_id , login_time ,row_number() over (partition by user_id order by login_time desc) MM from xxx)
WHERE mm = 1

使用 partition by

这是不要备注字段:
select max(d.login_time),d.user_id from table d group by d.user_id order by d.user_id;
如果要所有可以关联一次表。

select max(d.login_time) as maxTime,d.user_id from table d group by d.user_id

这样就够了

假如还用用户其他信息

select * from table t,(
select max(d.login_time) as maxTime,d.user_id from table d group by d.user_id
) t2 where t.user_id =t2.user_id and t.login_time=t2.maxTime

还可以再优化 可惜你给的信息不够 其实在你登录的时候更新下用户表的的登录时间 一切都变的简单

telephone518
telephone518 多谢你的建议
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐