이 쿼리를 (내부처럼 행동 참여) 예상 결과를 포기하지 않을 조인 :오라클의 외부는
select *
from table_a
, table_b
where table_a.id = table_b.id(+)
and table_b.name = 'BENEFICIARY'
나에게 더 레코드를 반환하지 않습니다. table_b에는 name = 'BENEFICIARY'인 레코드가 없습니다. 그러나 외부 조인은 관계없이 table_a의 모든 레코드를 반환해야합니다. 아니?
select *
from table_a
, (select *
from table_b
where table_b.name = 'BENEFICIARY') AS table_b1
where table_a.id = table_b1.id(+)
왜 첫 번째 질의는 반환하지 않습니다 기록을 예상대로 아래 쿼리는 table_a에서 레코드를 반환?
왜 쓸모없는 구문입니까? 왜 사용하지 (ANSI 준수!) "left/right join on"구문 ?????? – paulsm4
'(+)'문법 (개인적으로는 ANSI 구문이 장황하기 때문에 개인적으로 좋아하는 문법)을 사용하면 5 행은'table_b.name (+) = 'BENEFICIARY'이어야합니다. –