我有点问题。我有一个包含名称,ID和不同几何形状的表格,如下所示:
ID | Name| RealID| Geometry|
==========================================
1 | Hampshire | 3 | 0762453...
2 | Hampshire | 3 | 0156245...
3 | Salt Lake | 2 | 312455...
4 | Hampshire | 3 | 016422....
我需要根据ID列表选择所有Hampshire行。你可以看到我的桌子有不同的几何形状,比如汉普郡。 我只需要通过比较我从列表中获得的一个ID就可以了解所有这些。
我从Java获取ID列表。到目前为止,它只是一个带有一个ID(3)的列表。
这样做:
Select * from table where RealID = any(:listOfIds)
如果我在列表中发送汉普郡的ID,它只返回我一行(3)。我尝试过这样的事情:
Select * from table where RealID IN (any(:listofids))
但语法错误,我不知道如何实现我的目标。
答案 0 :(得分:1)
如果你想制作一些安全和干净的代码,你可以这样使用:
String query = "Select * from table where RealID IN (";
for (int i = 0; i < list.lenght(); i++) {
query += (i == 0 ? "" : ", ") + "?";
}
query += ")";
PreparedStatement preparedStatement = dbConnection.prepareStatement(query);
for (int i = 0; i < list.lenght(); i++) {
preparedStatement.setInt(i, list.get(i));
}
ResultSet rs = preparedStatement.executeQuery(query);
while (rs.next()) {
//get your informations here
}
您应该循环抛出列表并使用PreparedStatement,因此您的查询应如下所示:
Select * from table where RealID IN(?, ?, ?, ?, ?)
这是安全的方式。
答案 1 :(得分:0)
您可以尝试以下语法
SELECT * FROM table WHERE RealID in (listOfIDs)
例如:
SELECT * FROM table WHERE RealID in (3,2,6....)
你也可以试试这个:
SELECT * FROM table WHERE FIND_IN_SET('3', RealID);
答案 2 :(得分:0)
Select * from problem where RealID IN (?,?,?);
? =这里根据您的要求提供RealID 例如:
SELECT * FROM table WHERE RealID in (3);