2016-05-26 2 views
0

行が同じではなく、個々の列が等しい(各列を確認せずに)テーブルを自己結合するにはどうすればよいですか?例えば、私はCOL3列COL1、COL2、とテーブルを持っていると私は言い換えれば行が等しくない行で自己結合表を作成する方法

select * from table T1, table T2 where T1.col1 != T2.col1 or T1.col2 != T2.col2 or T1.col3 != T2.col3 

のような何かをしたいと言う、私は自分自身とペアのものを除くすべてのペアをしたいが、チェックする必要はありません各列。テーブルには一意のキーはありません(ただし、各行は一意です)。一意のキーを追加するように教えてください。それは問題のポイントではありません。ありがとう!

+0

あなたはどのように他のそれはあなたが望むものを知っているだろう、まだ列を指定する必要があるだろうか? 'WHERE CONCAT(T1.col1、T2.col2、T3.col3)!= CONCAT(T2.col1、T2.col2、T2.col3)' –

答えて

0

条件に等しくないクエリを使用する場合は、「<」を使用してください。

は、この文字列で検索してください:

select * from table T1, table T2 where T1.col1 <> T2.col1 or T1.col2 <> T2.col2 or T1.col3 <> T2.col3 
+0

これはほぼ正確に私のクエリです。すべての行をリストする必要があります –

関連する問題