首页  >  文章  >  数据库  >  如何使用 LIMIT 子句删除 MySQL 中特定范围的行?

如何使用 LIMIT 子句删除 MySQL 中特定范围的行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-25 13:58:30302浏览

How to Delete a Specific Range of Rows in MySQL Using LIMIT Clause?

带限制的 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn