Как удалить из таблицы, где 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.