2015-04-02 37 views
0

我有一個有趣的問題,我不知道如何處理它。兩個獨特列組合上的全外連接

我有2個表,我需要使用標識符加入相同的數據,並添加在左表或右表缺少的數據。它看起來像FULL OUTER JOIN,但問題是我有兩種鍵組合。

例如 T1_Identificator1 + T1_Identificator3 = T2_Identificator1 + T2_Identificator3 =相同的記錄 T1_Identificator2 + T1_Identificator3 = T2_Identificator2 + T2_Identificator3 =相同的記錄

我雖然對一些子選擇對每個記錄,但在我看來,太複雜,也有相當大的性能丟失

二的想法,這我只是現在正試圖與EXCEPT和INTERSECT

enter image description here

你有一些想法如何處理這個? 我準備了DB模式http://sqlfiddle.com/#!6/5de09

謝謝

回答

3

只是做一個FULL JOIN使用你所描述的情況:

SELECT * 
FROM T1 
FULL OUTER JOIN T2 
ON (T1_Identificator1 + T1_Identificator3 = T2_Identificator1 + T2_Identificator3) 
    OR (T1_Identificator2 + T1_Identificator3 = T2_Identificator2 + T2_Identificator3) 

檢查這個SQL Fiddle Demo。它產生與OP中引用的想要的完全相同的輸出。

+0

非常感謝你,聰明的解決方案=)我打算現在就實施它:-) – Muflix 2015-04-02 19:27:06