我有時會與左連接和OR混淆。左外連接 - 有什麼區別?
這裏在下面的兩個代碼示例中,只有一個區別。一個樣本中的WHERE子句中有一個括號,而另一個樣本中沒有括號。
顯然,我得到了不同的結果。我想了解發生了什麼。
謝謝。
SELECT FROM TABLE_A as A
LEFT OUTER JOIN TABLE_B as B
ON
A.col1 = B.col1 AND
A.col2 = B.col2 AND
A.col3 = B.col3
WHERE
B.col1 IS NULL OR B.col2 IS NULL OR B.col3 IS NULL AND
B.col4= 'R' AND
B.col5 != 'DR'
SELECT FROM TABLE_A as A
LEFT OUTER JOIN TABLE_B as B
ON
A.col1 = B.col1 AND
A.col2 = B.col2 AND
A.col3 = B.col3
WHERE
(B.col1 IS NULL OR B.col2 IS NULL OR B.col3 IS NULL) AND
B.col4= 'R' AND
B.col5 != 'DR'
這個問題是關於運算符優先級 - 它無關,與加入「左外」或以其他方式。 –
也是,你不能在oracle中使用'as'作爲表別名。 –