带限制的 MySQL DELETE 语句
用户在尝试使用以下查询从表中删除行时遇到错误:
DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;
错误信息表明语法不正确。
说明
出现错误是因为这里使用的 DELETE 语句在 LIMIT 中包含了偏移量条款。 MySQL 中不允许这样做。 LIMIT 子句只能指定要删除的行数。
解决方案
要从表中删除指定范围的行,不能使用偏移功能在 LIMIT 子句中。相反,您需要使用子查询来选择要删除的行,然后使用其主键值删除它们。
在此场景中可以使用以下查询:
DELETE FROM `chat_messages` WHERE `id` IN ( SELECT `id` FROM ( SELECT `id` FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50 ) AS `x` )
此查询使用双重嵌套来选择要删除的行并解决 MySQL 的限制。
以上是如何使用 LIMIT 子句删除 MySQL 中特定范围的行?的详细内容。更多信息请关注PHP中文网其他相关文章!