如果我写一个SQL:
select *
from a,b
where a.id=b.id(+)
and b.val="test"
我想从a中的所有记录都不存在,或者b中存在对应的记录,或者它与val =“test”一起存在,这是正确的查询吗?
最佳答案
使用ANSI语法会更好
SELECT *
FROM a
LEFT OUTER JOIN b ON( a.id = b.id and
b.val = 'test' )
您也可以使用Oracle的语法执行相同的操作,但是会产生一些提示
SELECT *
FROM a,
b
WHERE a.id = b.id(+)
AND b.val(+) = 'test'
请注意,在两种情况下,由于您未指定连接条件,因此我忽略了
c
表。我假设您并不是真的想将A加入B,然后再使用C生成笛卡尔积。
关于sql - 如何使用带有过滤条件where子句的oracle外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18390588/