Non puoi specificare l'offset in DELETE
LIMIT
di clausola.
Quindi l'unico modo per farlo è riscrivere la tua query in qualcosa del tipo:
DELETE FROM `chat_messages` WHERE id IN (select id from (select id
FROM `chat_messages`
ORDER BY `timestamp` DESC
LIMIT 20, 50) x)
Supponendo di avere la chiave primaria id
colonna
UPD :è necessario implementare il double nesting per ingannare mysql, poiché non consente di selezionare dalla tabella attualmente modificata (grazie a Martin Smith)