2017-11-11 142 views
0

下表給出的,我怎麼能有2個表給該T143具有每行重複的事實之間的區別:如何比較2 SQL表差異

T001.CODE    T143.CODE 
----     ----- 
A1      A1 
         A1 
A2      A2 
         A2 
A3    

A4      A4 
         A4 

結果應該是A3,它只有出現在T001中 - 我還需要顯示T143中的所有列。

這裏是我做的遠,但數據的手動檢查之後出現錯誤:

SELECT CODE FROM T001 
EXCEPT 
SELECT CODE FROM T143 

感謝

+2

你能顯示你當前得到的結果嗎? –

+2

用您正在使用的數據庫標記您的問題。 –

+0

如果你的結果應該是A3,你的查詢似乎在PostgreSQL和SQLite3下都可以使用。 – tonypdmtr

回答

0

你總是可以做到這一點使用exists

select t1.code 
from t001 t1 
where not exists (select 1 from t143 t2 where t2.code = t1.code); 

如果您還想要t2的列,然後使用union all來獲取它們。

如果你想兩個表中的所有代碼,只是做:

select t1.code 
from t001 
union -- on purpose for duplicate removal 
select t2.code 
from t143; 
+0

他'還需要顯示來自T143的所有列。' – Turo

0

完全外部聯接應該做的伎倆

SELECT DISTINCT COALESCE(T001.CODE,T143.CODE), T143.* 
FROM T001 FULL OUTER JOIN T143 
ON T001.CODE = T143.CODE 
WHERE T001.CODE IS NULL OR T143.CODE IS NULL 

編輯:由於DISTINCT在標籤中提到,我將它添加到查詢中

+0

似乎正在工作,我用T001。*而不是T143。*爲了顯示所有列 - 它有意義嗎? –

+0

這不是你說的問題,但如果它適合你的需求... – Turo