如何使用SQL查询删除列匹配任何集合的行?

时间:2019-05-09 18:59:47

标签: java sql jdbc

我正在尝试删除行,其中行中的每一列都与给定键匹配。在这里,我要执行批量操作,如果该行的值在任何列表中都匹配,我将删除所有行。我们可以遍历它并一一删除,例如

  

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至1万个项目,因此如何批量运行以上查询?

1 个答案:

答案 0 :(得分:1)

您可以只使用IN键世界在查询中传递列表,而不是:

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();