我有一个像这样的java.sql.ResultSet:
=============================
| colA | ColB | ColC | ColD |
=============================
| 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 2 |
| 1 | 1 | 2 | 3 |
| 1 | 1 | 2 | 4 |
| 1 | 2 | 3 | 5 |
| 1 | 2 | 4 | 6 |
| 1 | 2 | 4 | 7 |
| 1 | 2 | 4 | 8 |
| 1 | 3 | 5 | 9 |
| 1 | 3 | 6 | 10 |
=============================
第一列将始终具有单个值。最后一列永远是唯一的。
我需要一个实现,我想要检索ColD中与ColB或ColC或ColA中的特定项目相对应的所有项目。
例如,如果我在ColB中请求ColD中的值2中的所有项目,我应该得到[5,6,7,8](作为列表或数组)。
我想知道树实施是否是一种正确的方法。
最好的方法是什么?提前谢谢。
答案 0 :(得分:0)
Select colD from tableName where colB='2';
以上查询是否足够?
<强>更新强>
如果您需要在java中完成此操作,那么:
ResultSet rs=getAllDataInResultSet();//this method will return from stored procedure
List<int> resultList=new ArrayList<>();
while(rs.next()){
int colB=rs.getInt(2);
if(colB==2){
resultList.add(rs.getInt(4));
}
}
logger.debug(resultList); //logging the final Result list
输出:
[5,6,7,8]
答案 1 :(得分:0)
这只是一个简短的伎俩,我的HashMap的keys
为column4
,值为column1 column2 column 3
(以空格分隔)。
每当用户询问特定列的列值时,我都会相应地匹配并将keys
提供给他。
HashMap hm = new HashMap();
String query = "select * from emp;";
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
{
hm.put(rs.getString(4), rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
int fromCol = 2;
int colVal = 4;
List arr = new ArrayList();
Iterator it = hm.entrySet().iterator();
while (it.hasNext())
{
Map.Entry pair = (Map.Entry)it.next();
String key = pair.getKey().toString();
String value = pair.getValue().toString();
String []tokens = value.split(" ");
if(tokens[fromCol - 1] .equals( colVal+""))
arr.add(key);
}