我有时会与左连接和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'作为表别名。 –