小编典典

如何使用带有过滤条件where子句的oracle外连接

sql

如果我写一个SQL:

select * 
from a,b 
where     a.id=b.id(+) 
      and b.val="test"

我想从a中的所有记录都不存在,或者b中存在对应的记录,或者它与val =“ test”一起存在,这是正确的查询吗?


阅读 300

收藏
2021-03-17

共1个答案

小编典典

使用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生成笛卡尔积。

2021-03-17