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

Java 如何使用SQL查询删除列与任何集合匹配的行?,java,sql,jdbc,Java,Sql,Jdbc,我试图删除行中的每一列都与给定键匹配的行。在这里,我想做一个批量操作,如果它的值在任何列表中匹配,我将删除所有行。例如,我们可以循环浏览它并逐个删除 对于(条目:列表) //删除其中的列=条目 我正在寻找上述操作使用SQL和Java做为一个批处理操作。大概 删除列与列表中任何列匹配的行 public ResponseEntity deleteEntries(@RequestBody String id)引发SQLException{ String[]entries=ids.split(“,”);

我试图删除行中的每一列都与给定键匹配的行。在这里,我想做一个批量操作,如果它的值在任何列表中匹配,我将删除所有行。例如,我们可以循环浏览它并逐个删除

对于(条目:列表) //删除其中的列=条目

我正在寻找上述操作使用SQL和Java做为一个批处理操作。大概

删除列与列表中任何列匹配的行

public ResponseEntity deleteEntries(@RequestBody String id)引发SQLException{
String[]entries=ids.split(“,”);
for(int i=0;i

批量运行上述内容,因为我将删除1000到10K个项目,如何批量运行上述查询?

您可以使用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();

您可以始终将id作为xml传递,并从子查询中id所在的表中删除select ids from xml。快速提问-即使一个巨大的数据集中只有10行,IN操作也比while-right快?@bash确切地说,最好直接在RDBM中处理您的操作,而不是在代码中处理。要知道,在
中使用
数组并不能在所有数据库系统或JDBC驱动程序上都起作用。确切地说@markrottveel这是一个很好的观点,例如,对于postgresql,我们必须使用
ID=Any(?)
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();