Подтвердить что ты не робот

Как удалить сразу несколько записей в MySQL?

У меня есть строки более 60000 в моей таблице. Как удалить строки с 40000 до 50000 одновременно?

4b9b3361

Ответ 1

Вы можете использовать функцию between:

delete from exampleTable where id between 40000 and 50000

или

delete from exampleTable where id >= 40000 and id <= 50000

довольно просто?

Ответ 2

Я предполагаю, что вы хотите сделать это на основе стандартного порядка таблицы, и у вас нет естественного ключа или какого-либо другого способа упорядочить их в данных таблицы.

т.е. SELECT * FROM WORDS возвращает:

Hi
Hello
Bye
Goodbye
What up

Итак, если вы сказали, что хотите удалить строки с 2 по 4, вы хотите удалить Hello, Bye и Goodbye. Правильно?

Является ли порядок возврата вашей таблицы детерминированным? Другими словами, вы получаете результаты в том же порядке каждый раз? В идеале вы сможете идентифицировать столбец в своей таблице, который содержит данные, которые вы могли бы отключить, что позволит вам использовать ответ Tricker.

Если это неверно, вам нужно будет использовать номер строки для вашего оператора. Я не пользователь mysql, код ниже, несомненно, был бы чище, если бы я был. Кроме того, у меня даже нет базы данных mysql для проверки запроса. Я собрал выражение sql, используя этот пост, в качестве ссылки для того, как получить строку num в mysql. С MySQL, как я могу создать столбец, содержащий индекс записи в таблице?

В моем запросе предполагается, что у вас есть какой-то первичный ключ на вашем столе. Если нет, невозможно гарантировать, что вы не удалите лишние строки, плюс хороший дизайн стола.

DELETE FROM YOUR_TABLE 
WHERE primarykey = 
(SELECT  primarykey FROM 
   (SELECT t.primarykey, 
           @curRow := @curRow + 1 AS row_number
   FROM    YOUR_TABLE t
   JOIN    (SELECT @curRow := 0) r) 
WHERE row_number between 40000 and 50000);

Ответ 3

Таблица: бакалейная лавка

id item

1 рис 2 мыла 3 риса 4 рис

УДАЛИТЬ ИЗ 'бакалею' WHERE item = "рис" LIMIT 2;

Это спокойнее, чем все идеи. для этого конкретного элемента можно удалить 2 записи.

И ответ:

Удалены 2 строки.

ВЫБРАТЬ * ИЗ бакалеи

id item

1 рис 2 мыла

Ответ 4

Если у вас нет первичного ключа и вы хотите удалить по столбцу строки i.e, это можно сделать с помощью импорта экспорта mysql. Сделайте пользовательский экспорт - укажите начальную строку и количество. В вашем случае вам понадобится два экспорта: один для строк 0 - 40k, второй для 50 последних. Затем импортируйте эти два файла в таблицу. Примечание. Если импорт больших файлов является проблемой, я рекомендую BigDump. http://www.ozerov.de/bigdump/