sql >> Databasteknik >  >> RDS >> Mysql

Mysql radera uttalande med limit

Du kan inte ange offset i DELETE s LIMIT klausul.

Så det enda sättet att göra det är att skriva om din fråga till något 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 att du har primärnyckel id kolumn

UPD :du måste implementera dubbel kapsling för att lura mysql, eftersom det inte tillåter att välja från just nu modifierad tabell (tack vare Martin Smith)




  1. Sammanfoga en sträng och primärnyckel-ID vid infogning

  2. Hur man returnerar Unix-tidsstämpeln i SQL Server (T-SQL)

  3. Hur kan jag VÄLJA rader med MAX(kolumnvärde), PARTITION efter en annan kolumn i MYSQL?

  4. Isoleringsnivån Läs engagerad