You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中查询仅含最早日期的记录(未知最早日期时)

获取表中最早日期的所有记录(MySQL)

嘿,这个需求我之前也碰到过,给你分享两种实用的写法,都能在不知道最早日期的情况下直接拿到目标记录:

方法一:子查询 + MIN() 函数(兼容性拉满)

这是最经典的方案,几乎适配所有MySQL版本,逻辑也特别直观:先通过子查询算出表中的最早日期,再筛选出所有日期等于这个值的记录。

假设你的表名叫your_table,把下面语句里的表名替换成你实际的表名就行:

SELECT *
FROM your_table
WHERE date_col = (SELECT MIN(date_col) FROM your_table);

执行后就能返回所有date_col等于最早日期的记录,完全匹配你想要的结果。

方法二:窗口函数(MySQL 8.0+ 适用)

如果你的MySQL版本是8.0或更高,用窗口函数会更灵活——以后要是需要扩展需求(比如查每个分组的最早日期记录),改起来也方便。这里用RANK()函数,它会给相同日期的记录分配相同的排名,不会漏掉任何一条最早日期的记录:

SELECT id, date_col, `more data`
FROM (
    SELECT *,
           RANK() OVER (ORDER BY date_col ASC) AS date_rank
    FROM your_table
) ranked_data
WHERE date_rank = 1;

内层查询给每条记录按日期升序排名,最早的日期排名为1,外层筛选出排名为1的记录就搞定了。

两种方法都能满足需求,要是需要兼容老版本MySQL选第一种;新版本的话,第二种扩展性更强~

内容的提问来源于stack exchange,提问作者Scotty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:58:50