查询条件为数组怎么写sql语句

pilishou 2008-01-05 02:28:17
有一个数组a{1,2,3,4,5,6,7,8,9,10}
有一个表table
id name sex phone
1 45 64 544
2 df sf sf
3 df d d
4 df d d
5 df d df
6 sdf f fd
7 dfd d df
8 df df df
9 dfd df f
10 df df d
11 d df df
12 df d f
13 df df f
14 df df df
15 df f df
现在要把table里的id为a数组里有的的纪录查出来怎么写sql语句啊。
一a里有的元素做为id条件查询
查询结果应该是
1 45 64 544
2 df sf sf
3 df d d
4 df d d
5 df d df
6 sdf f fd
7 dfd d df
8 df df df
9 dfd df f
10 df df d
sql 语句该怎么写啊???
...全文
3035 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
薛定谔之死猫 2008-01-05
  • 打赏
  • 举报
回复
in对应的括号中替换为对数组元素的子查询就可以了
淡定的峰哥 2008-01-05
  • 打赏
  • 举报
回复
可以再创建一个表tid,就包含一个字段id,根据数组的长度,循环插入到tid中,然后再与你那个表连接查询不就出来了吗
老紫竹 2008-01-05
  • 打赏
  • 举报
回复 1
StringBuilder b = new StringBuilder("select * from table where id in (");
int[] ids = .....;
for(id id : ids){
b.append(id+",");
}
b = b.deleteCharAt(b.length()-1); // 去掉最后一个,
b.append(")";

String sql = b.toString(); // 去执行吧! 不过如果数组太大,则产生的sql语句长度会超过最大允许的SQL长度的。一般在1000左右。
restartrr 2008-01-05
  • 打赏
  • 举报
回复
 Connection conn=null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
.....
conn = DriverManager.getConnection(...);
pstmt = conn.prepareStatement("select * from table where id=?");
for(int i:a){
pstmt.setInt(1, i);
rs=pstmt.executeQuery();
if(rs.next())
.....
}
} catch (Exception e) {
} finally {
try {if (rs != null) rs.close();} catch (Exception e) {}
try {if (pstmt != null) pstmt.close();} catch (Exception e) {}
try {if (conn != null) conn.close();} catch (Exception e) {}
}
Hao粑粑爱生活 2008-01-05
  • 打赏
  • 举报
回复
在放进去执行之前,先遍历你的数组,拼装你的SQL语句
KK3K2005 2008-01-05
  • 打赏
  • 举报
回复
数组变了 你 select * from table where id in (1,2,3,4,5,6,7,8,9,10)
里 in(...)中的内容 就不能够变了?
pilishou 2008-01-05
  • 打赏
  • 举报
回复
数组你的内容大小不定呢
不一定是那几个数
老紫竹 2008-01-05
  • 打赏
  • 举报
回复
select * from table where id in (1,2,3,4,5,6,7,8,9,10)

81,116

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧