Mysql delete statement with limit

前端 未结 1 1779
醉话见心
醉话见心 2020-12-01 23:25

I\'m trying to delete rows from a table but I get an error.

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

I get this

相关标签:
1条回答
  • 2020-12-01 23:50

    You cannot specify offset in DELETE's LIMIT clause.

    So the only way to do that is to rewrite your query to something like:

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

    Supposing that you have primary key id column

    UPD: you need to implement double nesting to fool mysql, since it doesn't allow to select from currently modified table (thanks to Martin Smith)

    0 讨论(0)
提交回复
热议问题