两个独特列组合的完全外连接

时间:2015-04-02 19:08:10

标签: sql sql-server-2008

我有一个有趣的问题,我不知道如何处理它。

我有2个表,我需要使用标识符连接相同的数据,并添加左表或右表中缺少的数据。它似乎是FULL OUTER JOIN,但问题是我有2个键组合。

例如 T1_Identificator1 + T1_Identificator3 = T2_Identificator1 + T2_Identificator3 =相同记录 T1_Identificator2 + T1_Identificator3 = T2_Identificator2 + T2_Identificator3 =相同记录

我虽然在每张唱片上都有一些Subselect,但在我看来它太复杂了,并且还有相当大的性能损失

第二个想法,我刚才尝试的是EXCEPT和INTERSECT

enter image description here

你知道如何处理这个问题吗? 我准备了DB Schema http://sqlfiddle.com/#!6/5de09

谢谢

1 个答案:

答案 0 :(得分: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中引用的输出完全相同。