2017-01-06 7 views
0

2つのテーブルの複数の列をチェックして、テーブル間の行が一致していないかどうかを確認しようとしています。2つのテーブル間の複数の列で一意の値を確認する

 SELECT * 
     FROM {table1} 
     FULL OUTER JOIN {table2} 
     ON table1.colum1 = table2.colum1 
     WHERE table1.colum1 IS NULL 
     OR table2.colum1 IS NULL 

、これは私が2つのcolumsのためにしようとしたものです::

 SELECT * 
     FROM {table1} 
     FULL OUTER JOIN {table2} 
     ON table1.colum1 = table2.colum1 and table1.colum2 = table2.colum2 
     WHERE table1.colum1 IS NULL and table1.colum 
     OR table2.colum1 IS NULL and table2.colum2 IS NULL 

このdoenstが動作しているようですカントーこれは、私が唯一の1 columのために、今持っているものです。誰も私を少し助けることができますか?私は表1に持って

データ:私は表2に持って

--------- 
| 1 | 1 | 
--------- 
| 2 | 2 | 
--------- 
| 2 | 3 | 
--------- 

データ:

--------- 
| 1 | 1 | 
--------- 
| 2 | 3 | 
--------- 
| 2 | 4 | 
--------- 

予想結果:事前に

t1  t2 
----------------- 
| 2 | 2 | 2 | 4 | 
----------------- 

おかげ

+0

あなたは、いくつかのDDLとサンプルデータを提供することはできますか?あなたはどのデータ型を扱っていますか? –

+0

あなたはあなたが期待した結果にどのようになったのか説明できますか? – GuidoG

+0

@SeanLange私は文字列を扱っています –

答えて

3

慣用セットベースのアプローチhはUNIONEXCEPTを使用することです:

declare @t1 table (i1 int,i2 int) 
insert into @t1(i1,i2) values 
(1,1), 
(2,2), 
(2,3) 

declare @t2 table (i1 int,i2 int) 
insert into @t2(i1,i2) values 
(1,1), 
(2,3), 
(2,4) 

(select i1,i2 from @t1 
except 
select i1,i2 from @t2) 
union all 
(select i1,i2 from @t2 
except 
select i1,i2 from @t1) 

結果:

i1   i2 
----------- ----------- 
2   2 
2   4 
+0

これで解決しました。他の列?私は私の答えを更新して、私が何を意味するかを見ました。 –

+0

@wouterdejong - データが欠落している行であることを考えると、各テーブルの行を互いに一致させるための明白な方法はありません。これが純粋にプレゼンテーション*の問題であれば、プレゼンテーションレイヤーで扱うことをお勧めします。あるテーブルのデータ「2,2」と他のテーブルのデータ「2,4」とを接続する方法があれば、それを説明してください。この状況では、より多くのサンプルデータと期待される結果を提示して、関係がより明確になるのを助けるかもしれません。 –

0

これはトリックを行う必要があります。

SELECT coalesce(table1.col1, table2.col1) as col1 
    , coalesce(table1.col2, table2.col2) as col2 
FROM table1 
FULL OUTER JOIN table2 
    ON table1.col1 = table2.col1 and table1.col2 = table2.col2 
WHERE (table1.col1 IS NULL and table1.col2 IS NULL) 
    OR (table2.col1 IS NULL and table2.col2 IS NULL) 
関連する問題