MYSQL如何删除表中所有带有最小DATE值的记录
MySQL批量删除最小日期所有对应行的实现方法
你原本使用的SQL仅会按DATE升序排序后删除第一条匹配记录,因此无法覆盖首个交易日的全部交易数据,可使用以下两种方案实现需求:
方案1:子查询匹配法(写法简单,适合中小数据量)
该方案通过嵌套子查询规避MySQL同表更新限制,直接匹配删除所有最小日期对应行:
DELETE FROM 你的实际表名 WHERE `DATE` = ( SELECT min_date FROM ( SELECT MIN(`DATE`) AS min_date FROM 你的实际表名 ) AS temp );
方案2:关联删除法(执行效率更高,适合百万级以上大数据量表)
通过JOIN关联最小日期结果集,批量删除匹配行:
DELETE t1 FROM 你的实际表名 t1 INNER JOIN ( SELECT MIN(`DATE`) AS min_date FROM 你的实际表名 ) t2 ON t1.`DATE` = t2.min_date;
注意事项
- 请将SQL中的
你的实际表名替换为你的股票数据表的真实表名 DATE为MySQL内置关键字,因此用反引号包裹避免语法冲突,如果你实际的日期字段名为其他非关键字名称(如trade_date)可省略反引号- 删除操作前建议先执行查询验证结果,避免误删数据:
-- 先查询确认要删除的记录是否正确 SELECT * FROM 你的实际表名 WHERE `DATE` = (SELECT MIN(`DATE`) FROM 你的实际表名);
内容的提问来源于stack exchange,提问作者Chopin
相关产品推荐
相关产品推荐

