如何从数据库表中选取Last Modified Date为最大值的记录?
SQL筛选最后修改日期最大值记录解决方案

以上是目标表的样式示例,要筛选出Last Modified Date为最大值的记录需求完全可以实现,以下是不同场景对应的SQL写法:
- 通用全数据库适配写法(会返回所有最后修改日期为最大值的记录,有多条符合条件的记录时全部返回):
SELECT * FROM 你的表名 WHERE `Last Modified Date` = (SELECT MAX(`Last Modified Date`) FROM 你的表名);
注意:列名包含空格时需要按数据库类型转义:MySQL用反引号`包裹,SQL Server用方括号[]包裹,Oracle用双引号""包裹。
仅返回1条最新记录写法(即使存在多条相同最大修改日期的记录也仅返回第一条):
- MySQL/PostgreSQL 适配:
SELECT * FROM 你的表名 ORDER BY `Last Modified Date` DESC LIMIT 1;- SQL Server 适配:
SELECT TOP 1 * FROM 你的表名 ORDER BY [Last Modified Date] DESC;- Oracle 适配:
SELECT * FROM 你的表名 ORDER BY "Last Modified Date" DESC FETCH FIRST 1 ROW ONLY;高扩展性窗口函数写法(后续需要分组取每组最新记录时可直接调整):
WITH ranked_records AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY `Last Modified Date` DESC) AS rn FROM 你的表名 ) SELECT * FROM ranked_records WHERE rn = 1;
如果后续需要按某字段分组取每组的最新修改记录,仅需在OVER子句中添加PARTITION BY 分组字段名即可,比如按用户ID分组取每个用户的最新记录,就调整为ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY Last Modified Date DESC)。
内容的提问来源于stack exchange,提问作者banura96
相关产品推荐
相关产品推荐

