一尘不染

MySQL删除语句有限制

mysql

我正在尝试从表中删除行,但出现错误。

DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;

我在50时收到此错误:

您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ 50”附近使用

不知道怎么了


阅读 533

收藏
2020-05-17

共1个答案

一尘不染

您不能在DELETELIMIT子句中指定偏移量。

因此,唯一的方法是将查询重写为以下形式:

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

假设您有主键id

UPD :您需要实现双重嵌套来欺骗mysql,因为它不允许从当前修改的表中进行选择(感谢Martin Smith)

2020-05-17