6

2つのテーブルがあります。そして、これらのテーブルには、userid、usernameで構成される同じスキーマがあります。とに共通点があるか確認usernameしたい。table1table2

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

私の論理は次のとおりです。

  • while(rs1.next())
  • rs1の値をのすべての値と比較しますrs2
  • If一致が見つかりました値の1つをelse印刷し、両方の値を印刷します。

これをJavaで実現する方法はありますか...誰か助けてください...ありがとう...

4

6 に答える 6

4

単一のSQLステートメントを使用します。

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

これにより、両方のテーブルに表示されるユーザー名のみが返されるため、後処理は必要ありません。

この構成は内部結合と呼ばれます。table1および/またはに固有のユーザー名も識別したい場合は、外部結合table2を使用できます。

于 2013-03-03T09:05:13.827 に答える
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
}
于 2013-03-03T09:37:43.950 に答える
0

SQLステートメントINおよびNOTINを使用して解決するか、次のように試すことができます。

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;
    }
于 2013-03-03T09:46:00.813 に答える
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();
}
于 2013-04-23T06:21:05.467 に答える
0

1つの方法は次のとおりです。-

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

交差操作のどこに、とにかく共通の列が表示されます。

PS:-この質問は古いことは知っていますが、誰かに役立つかもしれません。

于 2018-05-04T05:21:11.657 に答える
-1

この答えはすでにAkash5288によって与えられ、PavelSmirnovによって編集されています。そして、これは魔法のように私のために働いた。元の回答に対する「いいね」や「コメント」にアクセスできないため、再投稿しています。どうもありがとう。私の側からの編集は1つだけです: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();
}
于 2020-10-02T13:57:26.973 に答える