Удалить строки из таблицы, но сохранить заданное число - PullRequest
2 голосов
/ 11 августа 2011

Используя mysql, как удалить все строки из таблицы, но сохранить, скажем, 200 записей?

Очевидный подход состоит в том, чтобы подсчитать их, сделать некоторую арифметику и удалить правильное число. Но есть ли в mysql встроенная функция, которая делает это в одном запросе на удаление?

1 Ответ

3 голосов
/ 11 августа 2011

Вы можете удалить, используя условие:

delete from YourTable
where YourSequentialID > 200

Однако в вашей последовательности могут быть пробелы, поэтому у вас не будет точно 200 строк.Итак, что вы можете сделать, это работать на ваше состояние.

Найдите записи, которые вы хотите сохранить (скажем, первые 200) и удалите все остальное:

delete from YourTable 
where id not in
(
select ID 
from YourTable
LIMIT 200
)

Я знаю, это может быть медленным.Но это не рабочий запрос, это просто запрос на очистку.Вы можете жить с необходимостью запустить его только один раз.

...