SQL面试题:找到每个人最新的一条数据


SQL面试题:在t_score表中,找到表中每个人最近的一条分数

username score time
小明 98 2021-07-29
小明 90 2021-07-01
小红 96 2021-07-15
小红 100 2021-06-21
小李 95 2021-05-03

结果就应该是

username score time
小明 98 2021-07-29
小红 96 2021-07-15
小李 95 2021-05-03

两种解法:

双表联查

SELECT t1.* FROM t_score t1
INNER JOIN (SELECT username, MAX(time) AS time FROM t_score GROUP BY username) t2
ON t1.username = t2.username AND t1.time = t2.time

开窗函数(MySQL不支持)

SELECT * FROM (
SELECT *, row_number() over (partition by username order by time desc) AS rn FROM t_score
) WHERE rn = 1


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM