Удалите много строк из таблицы, используя id в Mysql
Я администратор Linux с базовыми знаниями в запросах Mysql
Я хочу удалить много записей в таблице, которые являются ip-адресом из моей таблицы, используя id,
В настоящее время я использую
DELETE from tablename where id=1;
DELETE from tablename where id=2;
но мне нужно удалить 254 записи, поэтому этот метод займет несколько часов, как я могу сказать mysql для удаления строк, которые я указываю, потому что я хочу пропустить удаление некоторых из этих 254.
Удаление всей таблицы и импорт необходимых записей не является вариантом.
Ответы
Ответ 1
Лучше всего использовать инструкцию IN
:
DELETE from tablename WHERE id IN (1,2,3,...,254);
Вы также можете использовать BETWEEN
, если у вас есть последовательные идентификаторы:
DELETE from tablename WHERE id BETWEEN 1 AND 254;
Конечно, вы можете ограничить некоторые идентификаторы, используя другое предложение WHERE:
DELETE from tablename WHERE id BETWEEN 1 AND 254 AND id<>10;
Ответ 2
как насчет использования IN
DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
Ответ 3
Что-то вроде этого может сделать это немного проще, вы, очевидно, можете использовать script для создания этого или даже excel
DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
Ответ 4
если вам нужно сохранить только несколько строк, рассмотрите
DELETE FROM tablename WHERE id NOT IN (5,124,221);
Это сохранит только некоторые записи и отбросит других.
Ответ 5
Используйте IN
Раздел
DELETE from tablename where id IN (1,2);
ИЛИ вы можете объединить использование BETWEEN
и NOT IN
, чтобы уменьшить число, которое вы должны упомянуть.
DELETE from tablename
where (id BETWEEN 1 AND 255)
AND (id NOT IN (254));
Ответ 6
Другие предложили IN
, это прекрасно. Вы также можете использовать диапазон:
DELETE from tablename where id<254 and id>3;
Если идентификаторы для удаления смежны.
Ответ 7
Если у вас есть какое-то "условие" в ваших данных для определения 254 идентификаторов, вы можете использовать:
delete from tablename
where id in
(select id from tablename where <your-condition>)
или просто:
delete from tablename where <your-condition>
Простое кодирование 254 значений столбца id будет очень жестким в любом случае.
Ответ 8
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;
Попробуйте это.