2017-09-07 137 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信息的行。我使用了连接和where子句的组合,但是我没有得到我需要的结果。在此先感谢您的帮助!

+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

让我试试看,让它知道它是否适合我的需求。感谢您的快速回复Icarus! – 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