sql >> Database teknologi >  >> RDS >> Mysql

Mysql slette erklæring med grænse

Du kan ikke angive offset i DELETE s LIMIT klausul.

Så den eneste måde at gøre det på er at omskrive din forespørgsel til noget som:

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

Antag at du har primær nøgle id kolonne

UPD :du skal implementere dobbelt nesting for at narre mysql, da det ikke tillader at vælge fra aktuelt ændret tabel (tak til Martin Smith)




  1. Hvordan trunkerer du alle tabeller i en database ved hjælp af TSQL?

  2. SQL:Sammenligning af to tællinger fra forskellige tabeller

  3. Ting at vide om databasedrevne websteder

  4. Hvordan Pi() virker i PostgreSQL