无需子查询从SQL表中获取最大日期对应的记录
提取最大日期记录的无方子查询方案
假设你的表包含id、name、date_col(建议避免用DATE作为字段名,防止关键字冲突)三个字段,以下是几种不使用子查询的实现方式:
方法1:窗口函数筛选(支持MySQL 8.0+、PostgreSQL、SQL Server等)
利用全局窗口函数直接获取最大日期,匹配筛选目标记录:
SELECT id, name, date_col FROM your_table WHERE date_col = MAX(date_col) OVER();
方法2:排序取首条(仅单条最大日期记录场景适用)
如果确认最大日期对应的记录唯一,可通过排序后截取第一条:
SELECT id, name, date_col FROM your_table ORDER BY date_col DESC LIMIT 1;
注意:若存在多条共享最大日期的记录,此方法仅返回其中一条,不适用多记录场景。
方法3:自连接筛选(兼容旧版无窗口函数的数据库)
通过自连接找出没有更大日期的记录,即为最大日期记录:
SELECT t1.id, t1.name, t1.date_col FROM your_table t1 LEFT JOIN your_table t2 ON t1.date_col < t2.date_col WHERE t2.date_col IS NULL;
内容的提问来源于stack exchange,提问作者user32876
相关产品推荐
相关产品推荐

