В mysql нельзя использовать подзапросы в delete statement на ту же таблицу, откуда delete, так что либо транзакцию и 2 запроса, либо можно использовать join.
Для x = 1 с джойном как-то так:
delete t1 from foo t1 inner join foo t2 on (t2.value = t1.value and t2.id > t1.id);
Для x = N - соответственно N джойнов.
В любой нормальной базе, бхыхыхы.работающее в любой базе
MariaDB [test]> delete from foo where id in (select id from foo where foo = 1);
ERROR 1093 (HY000): Table 'foo' is specified twice, both as a target for 'DELETE' and as a separate source for data
Поясни поподробнее, я не понимаю, чем мой вариант с N join-ов не подходит.А можно ли удалить все записи, встречающиеся более х раз, но не х записей?
А потом еще меня троллят с тем, что я не считаю mysql нормальной базой))В любой нормальной базе, бхыхыхы.
Эм, я так понял, что надо удалить из дубликатов только count - limit самых старых. Иначе непонятно, причем тут "в порядке убывания".А вообще при чем тут джойны? group by + having, не?

delete foo from foo where id in ( select id from ( select id from foo where foo = 1 ) as foo_fake );