更正带有 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