Удалите много строк из таблицы, используя id в Mysql

Я администратор Linux с только базовыми знаниями в запросах Mysql

Я хочу удалить много записей таблицы, которые являются ip-адресом из моей таблицы, используя id,

в настоящее время я использую

DELETE from tablename where id=1;
DELETE from tablename where id=2;

но я должен удалить 254 записи, поэтому этот метод займет несколько часов, как я могу сказать mysql удалить строки,которые я указываю, потому что я хочу пропустить удаление некоторых записей из этого 254.

удаление всей таблицы и необходимый импорт записи не вариант.

8 ответов


лучший способ-использовать 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;

Как насчет использования IN

DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.

что-то вроде этого может сделать его немного проще, вы, очевидно, можете использовать скрипт для создания этого или даже excel

DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);

если нужно сохранить только несколько строк, считают

DELETE FROM tablename WHERE id NOT IN (5,124,221);

это сохранит только некоторые записи и отбросит другие.


использовать 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));

нет IN, это нормально. Вы также можете использовать диапазон:

DELETE from tablename where id<254 and id>3;

если идентификаторы для удаления являются смежными.


Если у вас есть какое-то "условие" в ваших данных, чтобы выяснить 254 идентификатора, вы можете использовать:

delete from tablename
where id in 
(select id from tablename where <your-condition>)

или просто:

delete from tablename where <your-condition>

просто жесткое кодирование 254 значений столбца id было бы очень жестким в любом случае.


DELETE FROM table_name WHERE id BETWEEN 1 AND 256;

Попробуйте Это.