Você não pode especificar o deslocamento em
DELETE
's LIMIT
cláusula. Portanto, a única maneira de fazer isso é reescrever sua consulta para algo como:
DELETE FROM `chat_messages` WHERE id IN (select id from (select id
FROM `chat_messages`
ORDER BY `timestamp` DESC
LIMIT 20, 50) x)
Supondo que você tenha a chave primária
id
coluna UPD :você precisa implementar o aninhamento duplo para enganar o mysql, pois não permite selecionar da tabela atualmente modificada (graças a Martin Smith)