select col_1,
col_2
from tbl_a A,
tbl_b B,
(select col_1,col_2 from tbl_c where clo_c_1 <> '1') C
where A.col_1 = B.col_1
and A.col_2 = B.col_2
and (A.col_2 = B.col_2
or C.col_2 = A.col_2);
我的環境是Oracle,當我運行這個SQL時,如果子SQL C沒有得到結果,那麼整個SQL返回NULL。如果C有一個適合其他condions的結果(非空)可能會有結果。有人會解釋爲什麼from區域的子SQL需要不爲NULL?非常感謝。爲什麼FROM區域中的子SQL不能爲空?
您正在尋找一個外部聯接 - 當您停止在where子句中使用舊的和過時的隱式聯接但使用顯式的JOIN運算符時(這是Oracle推薦的外部聯接來執行外部聯接連接)。 –
明白了,我當時不希望SQL太複雜,所以沒有考慮外連接。這真是一個解決方案。謝謝。 – Hare4096