0

Как удалить несколько строк с разными ID?

22

Я хочу сделать что-то подобное:

DELETE FROM table WHERE id IN (SELECT ....)

Как я могу это реализовать?

2 ответ(ов)

1

Если вам нужно удалить записи из таблицы по идентификатору, вы можете использовать следующий SQL-запрос:

DELETE FROM table WHERE id IN (SELECT id FROM somewhere_else);

Когда у вас уже есть известные идентификаторы и их не так много (например, меньше тысячи), вы можете использовать параметризованный запрос:

DELETE FROM table WHERE id IN (?,?,?,?,?,?,?,?);

Здесь вместо ? подставляются ваши известные идентификаторы. Это поможет избежать выполнения подзапроса и может улучшить производительность, особенно если вы точно знаете, какие идентификаторы хотите удалить. Использование параметров также повышает безопасность, предотвращая SQL-инъекции.

0

Ваш SQL-запрос удаляет записи из таблицы BA_CITY_MASTER, где название города (CITY_NAME) совпадает с названиями городов, которые встречаются более одного раза в этой же таблице.

Запрос выполняет следующие основные действия:

  1. Внутренний подзапрос:

    select CITY_NAME from BA_CITY_MASTER group by CITY_NAME having count(CITY_NAME) > 1;
    

    Этот подзапрос выбирает все названия городов, которые имеют более одной записи в таблице, группируя результаты по CITY_NAME и фильтруя их с помощью условия HAVING.

  2. Внешний запрос:

    Delete from BA_CITY_MASTER where CITY_NAME in (...);
    

    Внешний запрос использует результаты подзапроса для удаления соответствующих записей из таблицы BA_CITY_MASTER.

Таким образом, после выполнения этого запроса из таблицы будут удалены дублирующиеся записи по названиям городов. Будьте осторожны при использовании подобного запроса, так как он необратимо удаляет данные. Рекомендуется заранее сделать резервную копию данных или выполнить выборку (SELECT) для проверки, какие записи будут удалены.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь