【发布时间】:2021-12-29 02:45:47
【问题描述】:
希望这是一个简单的问题,我忽略了一些微不足道的事情,但我似乎无法在相当多的搜索中找到答案。
在执行 SELECT 查询时,我可以像这样执行 LIMIT:
SELECT * FROM `table` LIMIT 20,20
从偏移量 20 开始最多检索 20 行。
现在,假设我想删除我选择的那些行?
人们可能期望能够做到这一点:
DELETE FROM `table` LIMIT 20,20
但是,无论出于何种原因,这不是 MySQL 语法的一部分。
如果表有 id 字段,一个可行的解决方案是:
DELETE FROM `table` WHERE `id` >= 20 LIMIT 20
但是,它要求我首先找到第 20 个 id 值,并且需要有一个 id 字段。并非我的所有表格都有id 字段。如果表行的顺序不同于id 的升序,它也会给出不同的结果。
我正在尝试找到一个通用的解决方案,因为我正在处理具有多种不同列的表,因此我不能依赖任何特定的列来存在。我的一些表甚至没有主索引。
对于我的特定应用程序,我从表格末尾删除了一些被错误复制的单元格,但我很好奇是否有一个聪明的解决方案也可以从中间删除。
无论如何,我感谢任何帮助或想法!非常感谢!
【问题讨论】:
标签: mysql syntax limit sql-delete offset