Как удалить из таблицы, где ID есть в списке ID?

91

если у меня есть список идентификаторов (1,4,6,7) и таблица db, в которой я хочу удалить все записи, где идентификатор находится в этом списке, как это сделать?

Леора
источник

Ответы:

168

Ваш вопрос почти соответствует SQL для этого:

DELETE FROM table WHERE id IN (1, 4, 6, 7)
Матти Вирккунен
источник
@jayarjo: Любая разница, вероятно, будет совершенно незначительной, и я не думаю, что есть какие-то причины, по которым удаление по одному в любом случае было бы более эффективным.
Матти Вирккунен
Именно здесь производительность может сказаться на удобстве. Например, у меня уже есть функции, чтобы делать это одну за другой. Но если бы была возможность повышения производительности, я мог бы написать дополнительный код, иначе, вероятно, это того не стоит.
jayarjo 09
8
Один за другим почти наверняка будет медленнее, особенно на Oracle или PostgreSQL. Разбивка операций SQL на множество более мелких операций - отличный способ снизить производительность.
Дэвид Олдридж
1
Я обнаружил, что 10 000 элементов в предложении In заняли около 200 секунд, а 1000 - 3 секунды (или 30 секунд в нормализованном сравнении). Размер имеет значение.
ohmusama
12
delete from t
where id in (1, 4, 6, 7)
Карл Манастер
источник