如何比较java中两个结果集的值

时间:2013-03-03 09:01:49

标签: java resultset

我有两张桌子。这些表具有相同的模式,包括userid,username。我想检查usernametable1中是否有共同的table2

 rs1 = statement.executeQuery("select username from table1")
 rs2 = statement.executeQuery("select username from table2")

我的逻辑是:

  • while(rs1.next())
  • rs1的值与rs2的每个值进行比较。
  • If匹配找到打印值else中的一个打印两个值。

有没有办法在java中实现这一点...请任何人帮助我...谢谢......

6 个答案:

答案 0 :(得分:4)

我会使用一个SQL语句:

select table1.username from table1, table2 where table1.username = table2.username

这将只返回两个表中出现的用户名,因此不需要进行后处理。

此构造称为inner join。如果您还想识别table1和/或table2所独有的用户名,则可以使用outer join

答案 1 :(得分:0)

伪码:

if ( A.type = B.type )
{
    PRINT same type

    if ( A.format = B.format )
    {
        PRINT same format

        if ( A.value = B.value )
        {
            PRINT same value
        }
        else
        {
            PRINT different value
        }
    }
    else
    {
        PRINT different format
    }
}
else
{
    PRINT different type
}

答案 2 :(得分:0)

你可以通过SQL语句IN和NOT IN来解决它,或者你可以尝试这样的事情:

public boolean compareResultSets(ResultSet resultSet1, ResultSet resultSet2) throws SQLException{
        while (resultSet1.next()) {
            resultSet2.next();
            ResultSetMetaData resultSetMetaData = resultSet1.getMetaData();
            int count = resultSetMetaData.getColumnCount();
            for (int i = 1; i <= count; i++) {
                if (!resultSet1.getObject(i).equals(resultSet2.getObject(i))) {
                    return false;
                }
            }
        }
        return true;
    }

答案 3 :(得分:0)

我举一个例子来解决这个问题:

rs1 = statement.executeQuery("select username from table1")
rs2 = statement.executeQuery("select username from table2")

while(rs1.next()) {
// Compare till rs1 reachs its last record.
  while(rs2.next()) {
     if() {
       // Do your code here...
     }
  }

// this will move resultSet cursor to the first position.
rs2.first();
}

答案 4 :(得分:0)

一种方法可能是: -

String query = "(" + query1 +") intersect ("+ query2 + ")";

交叉操作中的位置无论如何都会为您提供公共列。

P.S。 : - 我知道这个问题很老,但它可能对某人有所帮助。

答案 5 :(得分:-1)

该答案已经由Akash5288给出,由Pavel Smirnov编辑。这对我来说就像魔术一样。我无权访问原始答案的“赞”或“评论”,这就是为什么我要重新发布它。非常感谢。我这边只做一个编辑: rs2.beforeFirst(); rs2.first(); 更好。

我正在举一个例子来解决这个问题:

rs1 = statement.executeQuery("select username from table1")
rs2 = statement.executeQuery("select username from table2")

while(rs1.next()) {
// Compare till rs1 reachs its last record.
  while(rs2.next()) {
     if() {
       // Do your code here...
     }
  }

// this will move resultSet cursor to the first position.
rs2.first();
}