오라클 :`(+)`는 WHERE 절에서 무엇을합니까? [sql]


Answers

다른 사람들이 말했듯이, (+) 문법은 오라클이 OUTER JOIN 과 동일한 결과를 달성하기 위해 오랫동안 사용해 온 독점적 인 구문입니다. SQL-92가 표준 구문을 결정하기 전에 독점 구문을 채택했다고 가정합니다.

모든 주요 RDBMS 구현에서 현재 지원되는 표준 SQL OUTER JOIN 구문을 사용하여 보여준 것과 동일한 쿼리가 다음과 같습니다.

SELECT
    Table1.Category1,
    Table1.Category2,
    COUNT(*) AS Total,
    COUNT(Table2.Stat) AS Stat
FROM Table1
  LEFT OUTER JOIN Table2 ON (Table1.PrimaryKey = Table2.ForeignKey)
GROUP BY Table1.Category1, Table1.Category2;

어떤 의미입니까?

  • Table1 모든 행은 쿼리 결과에 포함됩니다.
  • Table2 일치하는 행이있는 경우 해당 행 ( Table2 일치하는 여러 행이있는 경우 Table1 내용 반복)을 포함하십시오.
  • Table2 일치하는 행이없는 경우 쿼리 결과의 모든 Table2 열에 NULL 을 사용 NULL .
Question

마이그레이션 할 오라클 기반 애플리케이션에서 다음을 발견했습니다 (일반화 됨) .

SELECT
    Table1.Category1,
    Table1.Category2,
    count(*) as Total,
    count(Tab2.Stat) AS Stat
FROM Table1, Table2
WHERE (Table1.PrimaryKey = Table2.ForeignKey(+))
GROUP BY Table1.Category1, Table1.Category2

WHERE 절에서 (+) 무엇을합니까? 나는 그걸 전에 그렇게 사용하는 걸 한번도 보지 못했습니다.