比方說,我有2個表是這樣的: SQL加入2列時,其中一個爲空/空
我想加入的兩列#TMP1 &#TMP2:col2的& COL3。但是,如果這些列中的任何一個的值爲空或空,我想忽略該列並只看一個列。 因此,例如在這裏,當我加入Col2是ABC的地方時,我應該同時獲得DEF & Col3的空白。
我希望我在這裏有所幫助。如果不夠清楚,請道歉。
比方說,我有2個表是這樣的: SQL加入2列時,其中一個爲空/空
我想加入的兩列#TMP1 &#TMP2:col2的& COL3。但是,如果這些列中的任何一個的值爲空或空,我想忽略該列並只看一個列。 因此,例如在這裏,當我加入Col2是ABC的地方時,我應該同時獲得DEF & Col3的空白。
我希望我在這裏有所幫助。如果不夠清楚,請道歉。
表可以使用union
用於這種檢查,如果兩列中的至少1是相同的使用exists
:
select col1, col2, col3
from tmp1 t1
where exists (select 1
from tmp2 t2
where t1.col2 = t2.col2 or t1.col3 = t2.col3)
union
select col1, col2, col3
from tmp2 t2
where exists (select 1
from tmp1 t1
where t1.col2 = t2.col2 or t1.col3 = t2.col3)
結果:
| col1 | col2 | col3 |
|-------|------|------|
| test1 | abc | def |
| test2 | aaa | bbb |
| test1 | abc | |
| test2 | ccc | bbb |
謝謝@sgeddes!我認爲就是這樣.. – Abhi
我無法從你的例子告訴你想加入,但要解決「空」的問題哪些列你做這樣的
SELECT *
FROM T1
JOIN T2 ON COALESCE(T1.COL1,T2.COL1) = T2.COL1
AND COALESCE(T1.COL2,T2.COL2) = T2.COL2
如果T1.COL1或T1.COL2爲空它會使用它加入的表的值。這使null成爲「通配符」。
,或者如果T2是用null
SELECT *
FROM T1
JOIN T2 ON T1.COL1 = COALESCE(T2.COL1,T1.COL1)
AND T1.COL2 = COALESCE(T2.COL2,T1.COL2)
不知道我在下面。你能分享一下你對這個樣本數據集的預期結果嗎? – Mureinik
@Mureinik:好了,所以當我加入#TMP1&#用於col2的和COL3 TMP2,我想: ' '測試1', 'ABC', 'DEF' '測試1', 'ABC', '' 「 Test2',AAA','BBB' 'Test2','CCC','BBB'' – Abhi
加入表格的條件是什麼。它是一個交叉連接嗎? – navigator