java - 从数据库中获取具有可变条件的记录

标签 java sql

我正在尝试获取其 id 位于特定集合中的记录列表。我将通过网络服务从另一个应用程序获取此集合。我应该这样编写查询:SELECT * FROM tbl_data WHERE id IN (?, ?, ?, ?)。但问题是 (?, ?, ?, ?) 部分的长度是可变的。对于一个请求,它类似于:SELECT * FROM tbl_data WHERE id IN (?, ?, ?),对于另一个请求,类似于:SELECT * FROM tbl_data WHERE id IN (?, ?, ?,?,?,?)。我真的不喜欢循环并一项一项地获取记录。有什么方法可以构建这个查询吗?

最佳答案

您可以在代码中生成查询的 IN 部分。如果您知道应该用什么来代替?符号,您只需运行循环并构建它。

String sqlPart = "(";
for (every symbol but last){
sqlPart += symbol;
sqlPart += ",";
}
sqlPart += lastSymbol;
sqlPart += ")";

String sql = "SELECT * FROM tbl_data WHERE id IN " + sqlPart;

关于java - 从数据库中获取具有可变条件的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372046/

相关文章:

sql - PHPMyadmin 中的行递减/递增

php - 计算 where 子句上每个值的 sql 结果

按高行号过滤时,SQL 存储过程运行速度极慢

java - Android 拥有多个 View 的最有效方式

java - 在 jTables 中使用 TableCellEditor 进行输入验证

MySQL 连接而不是子查询

php - 使用 '@' 登录输入不会改变表

java - REST 中成功的 DELETE 语句的 HTTP 状态返回码是什么?

java - 循环文本文件时的额外空间。

java - <jsp :include or <@include or Tiles