我想合并2 resultSet的结果,这是sql查询返回的结果。实现这一目标的最佳方法是什么?
我的计划是删除2个结果集以打印出两个结果集的最终结果。两个结果集都具有相同的id列,这是它们的第一列。但对于内部while循环,我只打印出第一个值。
我认为当匹配时,它会打印第二个结果集中的值,然后退出循环。然后当有另一场比赛时,它会再次打印出该值。
while (set1.next())
{
System.out.print("Id: "+set1.getInt(1)+", Name: "+set1.getString(2));
while (set2.next())
{
if (set1.getInt(1)==(set2.getInt(1)))
{
System.out.print(", Alias: "+set2.getString(2);
break;
}
}
System.out.println();
}
编辑:
ResultSet set1:
id | name
1 | A
2 | B
3 | C
...
ResultSet set2:
id | alias
1 | F
2 | G
2 | H
我想打印出来:
Id: 1, Name: A, Alias: F
Id: 2, Name: B, Alias: G, H
仅供参考,两组中的id按升序排列
答案 0 :(得分:1)
以下循环仅对外循环执行一次
while (set2.next()){
if (set1.getInt(1)==(set2.getInt(1))){
System.out.print(", Alias: "+set2.getString(2);
break;
}
}
每次执行外部循环时,都需要重新初始化迭代器。
答案 1 :(得分:0)
由于两个结果集具有相同的第一列(id),因此您可以从两个结果集的第一行开始。在内部循环中,迭代set2中的行,直到其id大于set1中的id。所以你可以这样做:
while (set1.next())
{
System.out.print("Id: "+set1.getInt(1)+", Name: "+set1.getString(2));
while (set2.next())
{
System.out.print(", Alias:");
if (set1.getInt(1)==(set2.getInt(1)))
{
System.out.print(set2.getString(2) + ", ");
continue;
} else {
set2.previous();
break;
}
}
System.out.println();
}