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

Mary-Kate Olsen
发布: 2024-10-25 13:58:30
原创
301 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!