我有两个结果集(rs1
和rs2
)具有相同的字段。现在,如何将这两个结果集合并为一个,以便重复的行显示一次。
答案 0 :(得分:11)
如果两个ResultSet
来自同一个数据库,那么为什么不在检索过程中使用union
组合它们; e.g。
select A, B
from C
union
select A, B
from D
但是,如果这不是一个选项,那么我建议您定义一个Row
类来表示从ResultSet
中提取的行并实施equals
/ hashCode
以允许Row
进行平等比较。然后,只需将每个Row
添加到Set
(例如HashSet
),即可删除重复项。
答案 1 :(得分:3)
你可以:
equals()
和hashCode()
方法(让您的IDE帮助您生成这些)创建Set
(HashSet
):
设置combinedDataSet = new HashSet();
迭代每个resultSet,并构造对象:
while (rs1.next) {
YourClass obj = new YourClass();
obj.setSomeProperty(rs.getString(1));
obj.setAnotherProperty(rs.getString(2));
// etc..
cominbedDataSet.add(obj);
}
同样的迭代适用于rs2
只有在无法通过SQL查询获得所需结果的情况下执行此!