Как удалить строки, где столбец соответствует любому из набора, используя SQL-запрос? - PullRequest
1 голос
/ 09 мая 2019

Я пытаюсь удалить строки, в которых каждый столбец строки соответствует ключу ввода.Здесь я хочу выполнить массовую операцию, в которой я буду удалять все строки, если их значение соответствует любому из списка.Мы можем пройти по нему и удалить по одному, например,

for (Записи в записи: список) // Удалить, где столбец = запись

Я ищу вышеоперация с использованием SQL и Java, чтобы сделать как пакетную операцию.Примерно так:

удалить строки, где столбец соответствует любому из списка

public ResponseEntity deleteEntries(@RequestBody String ids) throws SQLException {
        String[] entries = ids.split(",");
        for(int i = 0; i < ids.length; i++) {
            PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM  LIST_ITEMS WHERE ID = ? ");
            preparedStatement.setInt(1, ids[i]);
            preparedStatement.executeQuery();
        }
        return new ResponseEntity(HttpStatus.OK);
    }

, запустите вышеупомянутое в пакете, так как я буду удалять 1000 - 10K элементов, каквыполнить вышеуказанный запрос в пакете?

1 Ответ

1 голос
/ 09 мая 2019

Вы можете просто передать список в своем запросе, используя IN key world, поэтому вместо:

DELETE FROM  LIST_ITEMS WHERE ID = ? 

вы можете использовать:

DELETE FROM  LIST_ITEMS WHERE ID IN (?)
                                 ^^

Ваш код может выглядеть так:

String query = "DELETE FROM  LIST_ITEMS WHERE ID IN (?)";
PreparedStatement preparedStatement = connection.prepareStatement(query);
Array array = preparedStatement.getConnection().createArrayOf("VARCHAR", entries);
preparedStatement.setArray(1, array);
preparedStatement.executeQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...