2011-10-26 14 views
0

PostgreSQLで2つの選択を比較する際に問題があります。これらの選択をJDBCで実行して、結果セットのデータを新しいテーブルに挿入して新しいテーブルを作成します。私は "カウント"のような同じ名前の列を避けたいからです。次に、これらのテーブルのデータを比較する必要があります。相対位置に基づいてテーブルの列を比較します

問題は、列の順序が異なる同じデータがある場合、これらの表が同じである必要があります。たとえば、表t1およびt2に3列(1,2,3)がある場合、t1.1 = t2.2およびt1.2 = t2.1およびt1.3 = t2.3の場合、これらの表は同じです。

+0

どちらのテーブルにも重複する行がありますか?そしてもしあれば、このシナリオにどのように対処したいのですか? 'Table1には2つの行があり、Table2には同じ行がありますが、コピーは1つだけです ' – MatBailie

+0

順序はありません。列には名前があります。あなたがしようとしていることを説明してください。 – wildplasser

答えて

2

列内の列の順番は、作成時に決定されます。あなたは

SELECT * FROM tbl; 

または

TABLE tbl; 

を行う場合は、あなたがして、テーブルを作成した列の順序を取得します。 SELECTの列に名前を付けると、明示的な順序で列が取得されます。

あなたはである必要があります。常にはあなたのような操作のために使用する列を記入してください。後でテーブルの列の順序を変更すると、破損する可能性があります。 *に頼らないでください。

SELECTの行の順番は限り、あなたはORDER BY句が含まれていないとして不定です。特定の注文が必要な場合は、ORDER BYにプライマリまたはユニークな列(または列の一意の組み合わせ)を設定する必要があります。非一意の列セットで注文すると、同じキーのグループ内の行は再び不確定な順序になります。

SELECT col1, col2, col3 FROM tbl 
ORDER BY <unique column or set of oclumns>; 

ORDER BY clauseのマニュアルをお読みください。

関連する問題