2016-12-31 74 views
0

我只想從表1中獲取與表2相關的常見值,如下圖所示。
如何,如下面圖片中所示的結果顯示我少見值
這是我使用的查詢,但它如我所料如何從表1和表2中獲取不常見的值

select * from t1.* from Table1 t1 inner join Table2 t2 on t1.Name <> t2.Name 
不顯示結果

enter image description here

+0

請解釋邏輯。爲什麼「SQL 2K12」的結果? –

+1

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –

回答

1
SELECT * FROM TableA 
FULL OUTER JOIN TableB 
ON TableA.name = TableB.name 
WHERE TableA.id IS null 
OR TableB.id IS null 

在的情況下,外連接少見行不存在在其他各行中產生一個NULL字段。我們基本上這樣選擇它。

+0

感謝它的工作 – user6503334

0

使用ExceptUnion All 。不知道爲什麼"SQL 2K12"是結果,因爲它存在於兩個表

select col from table1 
except 
select col from table2 
Union all 
select col from table2 
except 
select col from table1 
+0

i updated image – user6503334

+0

我收到錯誤消息:消息205,級別16,狀態1,行1 所有使用UNION,INTERSECT或EXCEPT運算符組合的查詢在其目標列表中必須具有相同數量的表達式。 – user6503334

+0

@ user6503334 - 您如何在原始查詢中進行替換。 select中的列數應該相同也應該鍵入兼容 –

0

Select col 
From (
     Select col from Table1 
     Union All 
     Select col from Table2 
    ) A 
Group By col 
Having count(*)=1 
0

這是根據你的例子另一種選擇

SELECT * -- or SELECT COALESCE(t1.Name,t2.Name) As Name 
FROM 
    Table1 t1 
    FULL OUTER JOIN Table2 t2 ON t1.Name = t2.Name 
WHERE 
    t1.Name IS NULL OR t2.Name IS NULL; 

如果有兩個表中只有一列(或兩個表具有相同的列),如果你不希望這些列重複

SELECT * 
FROM 
    Table1 
UNION 
SELECT * 
FROM 
    Table2 

EXCEPT 
(
SELECT * 
FROM 
    Table1 
INTERSECT 
SELECT * 
FROM 
    Table2 
) 
相關問題