我需要在以下情况下SQL服务器加入
Table One
Col A
Col B
Col C1
Col C2
Col C3
Table Two
Col C
Col D
我需要加入[一]与[二],并得到One.A和Two.D作为我的输出连接两个表的帮助。
这里是连接逻辑:
加入[一] .C1 = [二] .C如果不匹配,我需要加入[大]≥C2 = Two.C如果再没有匹配加盟[大]≥C3 = [二] .C
我需要在以下情况下SQL服务器加入
Table One
Col A
Col B
Col C1
Col C2
Col C3
Table Two
Col C
Col D
我需要加入[一]与[二],并得到One.A和Two.D作为我的输出连接两个表的帮助。
这里是连接逻辑:
加入[一] .C1 = [二] .C如果不匹配,我需要加入[大]≥C2 = Two.C如果再没有匹配加盟[大]≥C3 = [二] .C
您需要COALESCE()
:
SELECT DISTINCT
COALESCE(One1.A, One2.A, One3.A) AS A,
D
FROM
Two
LEFT JOIN One AS One1 ON
Two.C = One1.C1
LEFT JOIN One AS One2 ON
Two.C = One2.C2
LEFT JOIN One AS One3 ON
Two.C = One3.C3;
这个任务可以通过只使用一个连接完成。看到我的答案。 – unknown
尝试此查询:
SELECT
one.A as oneA,
two.D as twoD
FROM
One one
INNER JOIN Two two ON one.C1 = two.C
OR one.C1 = two.C2
OR one.C3 = two.C;
这样做的问题是,如果有多个匹配项,就会得到多行,例如一行中的C1与另一行中的C2相同。 –
我不这么认为。见http://sqlfiddle.com/#!2/ddc344/1,这只是一个例子。我知道这不适合。检查该查询的结果。 – unknown
@unknown谢谢,但是当多于一个C1/C2/C3匹配时,您的查询会返回多行。我想要第一个匹配的结果不是多行。 – user3416602
什么是你的多行预期具有相同的'One.A'和'Two.D'值?你想看重复吗?让他们分组在一起? – DMason
@DMason我希望他们分组在一起。 – user3416602