我试图从表格中删除行,但是出现了错误。
DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;
我在第50行遇到了这个错误:
您的SQL语法有误,请检查与您的MySQL服务器版本相对应的手册,以了解正确的语法使用方法,位于第1行附近 ' 50'
不知道哪里出错了。
我试图从表格中删除行,但是出现了错误。
DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;
我在第50行遇到了这个错误:
您的SQL语法有误,请检查与您的MySQL服务器版本相对应的手册,以了解正确的语法使用方法,位于第1行附近 ' 50'
不知道哪里出错了。
你无法在 DELETE
的 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`
)
假设您有主键id
列
更新:您需要实现双重嵌套来欺骗MySQL,因为它不允许从当前修改的表中进行选择(感谢Martin Smith)
DELETE
只接受在 LIMIT
中使用 rowcount
。 - Jason McCrearyIN
中,您会收到错误消息“您无法在FROM子句中指定目标表'chat_messages'进行更新”。您可以通过将子查询作为派生表来解决这个问题。 - Martin Smith