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



0 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 절에서 (+) 무엇을합니까? 나는 그걸 전에 그렇게 사용하는 걸 한번도 보지 못했습니다.



Related