”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 MySQL DELETE 语句中使用 LIMIT 删除一定范围的行?

如何在 MySQL DELETE 语句中使用 LIMIT 删除一定范围的行?

发布于2024-11-09
浏览:375

How to Delete a Range of Rows Using LIMIT in MySQL DELETE Statement?

更正带有 LIMIT 的 MySQL DELETE 语句的语法

尝试使用带有 LIMIT 的 DELETE 语句从 MySQL 表中删除一系列行时LIMIT 子句,如果语法不正确,您可能会遇到错误。此错误通常表明用于指定限制的语法存在问题。

所提供的查询中的问题是您无法在 DELETE 语句的 LIMIT 子句中指定偏移量。在 DELETE 语句中使用 LIMIT 子句的语法是 LIMIT ,不指定偏移量或起始点。

要解决此问题,您需要重写查询以指定要删除的行更准确地说。执行此操作的一种方法是使用 IN 子句选择要删除的行的 ID,然后使用这些 ID 来筛选 DELETE 语句中的行。

以下是如何重写的示例您的查询:

DELETE FROM `chat_messages` 
WHERE `id` IN (
    SELECT `id` FROM (
        SELECT `id` FROM `chat_messages`
        ORDER BY `timestamp` DESC
        LIMIT 20, 50
    ) AS `x`
)

在此查询中,我们首先使用子查询来选择要删除的行的 ID。然后,我们在主 DELETE 语句中使用 IN 子句根据这些 ID 过滤行,从而删除所需范围的行。

需要注意的是,您可能需要对基于表的特定结构和所需行为的查询。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3