如何从指定结构的数据表中获取最新记录?
如何检索数据表中的最新记录?
嘿,针对你的需求,分两种常见场景来给你方案,你可以根据实际需要选择:
场景1:获取整个表中最新的单条记录
如果只是想要全表时间最晚的那一条数据,直接对ctime倒序排序后取第一条就行——你的ctime是YYYYMMDD格式的字符串,这种格式的字符串排序逻辑和日期排序完全一致,不用额外转换:
SELECT * FROM your_table_name -- 记得替换成你的实际表名 ORDER BY ctime DESC LIMIT 1;
场景2:按用户分组,获取每个用户的最新记录
如果需要每个user_id对应的最新一条评论,用窗口函数是最清晰的方案,这里用ROW_NUMBER()给每个用户的记录按时间排序标记序号,取序号为1的就是该用户的最新记录:
SELECT id, user_id, ctime, comment FROM ( SELECT *, -- 按user_id分组,组内按ctime倒序排,给每条记录标序号 ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY ctime DESC) AS rn FROM your_table_name -- 替换成实际表名 ) t WHERE rn = 1;
补充说明
如果存在同一个用户在同一天有多条记录的情况,ROW_NUMBER()会随机选中其中一条;要是你想保留所有同时间的最新记录,可以把ROW_NUMBER()换成RANK()或者DENSE_RANK()。
内容的提问来源于stack exchange,提问作者KaiserKatze
相关产品推荐
相关产品推荐

