文章目录
- 表结构和数据:
- 方法一:如果只需要用户id和最后一次登陆时间
- 方法二:如果需要携带其他日志信息
- 方法三:oracle数据库 使用row_num() over
表结构和数据:
CREATE TABLE `temp_test` (`id` bigint(20) DEFAULT NULL,`user_id` bigint(20) DEFAULT NULL,`login_time` datetime DEFAULT NULL,`msg` varchar(255) DEFAULT NULL
)
方法一:如果只需要用户id和最后一次登陆时间
select user_id ,max(login_time) from temp_test group by user_id
方法二:如果需要携带其他日志信息
根据user_id 、login_time关联原日志表即可
select oriTable.id,oriTable.user_id ,oriTable.msg,oriTable.login_time from temp_test oriTableinner join (select user_id ,max(login_time) maxTime from temp_test group by user_id) maxTimeViewon oriTable.user_id =maxTimeView.user_id and oriTable.login_time=maxTimeView.maxTime
方法三:oracle数据库 使用row_num() over
SELECT * FROM (
SELECT user_id , login_time ,row_number() over (partition by user_id order by login_time desc) MM from temp_test )
WHERE mm = 1
partition by user_id :根据user_id 分区