Oracle에서 (+)는 JOIN의 "선택적"테이블을 나타냅니다. 쿼리에서
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id(+)
테이블 'b'에서 테이블 'a'의 LEFT OUTER JOIN입니다. 다른 쪽 (옵션 테이블 'b')에 데이터가 없을 때 데이터를 잃지 않고 테이블 'a'의 모든 데이터를 반환합니다.
동일한 쿼리에 대한 최신 표준 구문은 다음과 같습니다.
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b ON a.id=b.id
또는 축약 형 a.id=b.id
(일부 데이터베이스에서 지원하지는 않음) :
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b USING(id)
(+)를 제거하면 정상적인 내부 조인 쿼리가됩니다.
Oracle 및 기타 데이터베이스 모두에서 이전 구문 :
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id
보다 현대적인 구문 :
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
INNER JOIN b ON a.id=b.id
또는 간단히 :
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
JOIN b ON a.id=b.id
'a'와 'b'테이블의 'id'값이 동일한 모든 데이터 만 반환하며 공통 부분을 의미합니다.
쿼리를 올바른 조인으로 만들려면
이것은 LEFT JOIN과 동일하지만 어떤 테이블이 선택적인지 전환합니다.
기존 Oracle 구문 :
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id(+)=b.id
최신 표준 구문 :
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
RIGHT JOIN b ON a.id=b.id
참조 및 도움말 :
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:6585774577187
Oracle 11g에서 + 부호를 사용하여 왼쪽 외부 조인
https://www.w3schools.com/sql/sql_join_left.asp