如何在MySQL(MariaDB)数据库中删除表的倒数第二行数据
报错原因
MySQL 的 DELETE 语句内置的 LIMIT 子句仅支持传入单个参数指定删除行数,不支持带偏移量的 LIMIT 偏移量,行数 写法,因此你写的删除语句会触发语法错误。
可行实现方案
方法1:子查询匹配主键删除(通用稳妥方案,无场景限制)
通过嵌套子查询先拿到倒数第二行的主键OID,再基于主键匹配删除,绕开同表更新查询的限制:
DELETE FROM hot_coffee_order WHERE OID = ( SELECT OID FROM ( SELECT OID FROM hot_coffee_order ORDER BY OID DESC LIMIT 1,1 ) AS temp_table );
方法2:自增主键偏移匹配(仅适用于OID连续无断号场景)
如果你的OID是连续自增、没有因为历史删除操作出现断号,可以直接通过最大ID减1定位目标行:
DELETE FROM hot_coffee_order WHERE OID = (SELECT MAX(OID) FROM hot_coffee_order) - 1;
注意事项
执行删除操作前建议先运行对应的SELECT语句确认匹配到的行是你要删除的目标数据,条件允许的话可以先开启事务,确认删除结果正确后再提交,避免误删数据。
内容的提问来源于stack exchange,提问作者ChrisCross
相关产品推荐
相关产品推荐

