2017-09-07 8 views
0

2つのテーブルから同じ正確な値を持たない行を表示する必要があります。説明するために:2つのテーブルから複数の値を比較する(可能な場合)

表1

Item_col  val_col 
Item1   1a 
Item1   1b 
Item1   2a 
Item2   2b 
Item2   2a 
Item3   1a 

表2

Item_col  val_col 
Item1   1b 
Item2   2b 
Item2   2a 
Item3   1b 
Item3   1a 
Item3   2a 

予期される結果:で

Item_col  val_col 
Item1   1a 
Item1   2a 
Item3   1b 
Item   2a 

を上記の例では、同じItem_colおよびval_col情報を持つ行がフィルタリングされます。私はジョインと句の組み合わせを使用しましたが、必要な結果が得られません。あなたの助けを前もってありがとう!

+0

コードを投稿してください。 – Phil

答えて

0

私はあなたがこのような何かを探していると思う - 私は、コードはかなり自明だと思う:

SELECT * 
FROM table1 t1 
WHERE NOT EXISTS (SELECT 1 
        FROM table2 t2 
        WHERE t2.Item_Col = t1.Item_Col 
          AND t1.val_col = t2.val_col) 
UNION 
SELECT * 
FROM table2 t2 
WHERE NOT EXISTS (SELECT 1 
        FROM table1 t1 
        WHERE t2.Item_Col = t1.Item_Col 
          AND t1.val_col = t2.val_col); 

は、ここでそれを実証full fiddleです。

+0

私のニーズに合っているかどうか試してみましょう。あなたの素早い返信イカルスに感謝します! – 15433

0

私はこれを好きです。

SELECT t1.* 
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.Item_col = t2.Item_col AND t1.val_col = t2.val_col 
WHERE t2.Item_col IS NULL 

UNION ALL 

SELECT t2.* 
FROM table2 t2 
LEFT JOIN table1 t1 ON t1.Item_col = t2.Item_col AND t1.val_col = t2.val_col 
WHERE t1.Item_col IS NULL 
関連する問題