복붙노트

[SQL] 오라클 : 'WHERE 절에`(+)의 기능은 무엇입니까?

SQL

오라클 : 'WHERE 절에`(+)의 기능은 무엇입니까?

우리는 (일반화) 마이그레이션하고있는 오라클 기반 응용 프로그램에서 다음을 찾았습니다

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 절에 무엇입니까? 나는 이전처럼 사용 본 적이 없어요.

해결법

  1. ==============================

    1.이는 "="는 "(+)의 측면에 있습니다에 따라, 왼쪽 외부 또는 RIGHT OUTER를 나타냅니다 가입 (이 경우, 그것은 왼쪽 외부 조인이다). 그것은 때때로 사람들이 선호 된 오라클 구문을 누가 그들은 그들의 코드를 짧게 만드는 것을 좋아하기 때문에, 먼저 배웠다.

    이는 "="는 "(+)의 측면에 있습니다에 따라, 왼쪽 외부 또는 RIGHT OUTER를 나타냅니다 가입 (이 경우, 그것은 왼쪽 외부 조인이다). 그것은 때때로 사람들이 선호 된 오라클 구문을 누가 그들은 그들의 코드를 짧게 만드는 것을 좋아하기 때문에, 먼저 배웠다.

    베스트 가독성을 위하여,하지만 그것을 사용하지.

  2. ==============================

    2.다른 사람이 언급 한 것처럼, (+) 구문은 오라클이 외부 조인과 같은 결과를 달성하기 위해 년 동안 사용했던 오래된 독점 구문입니다. 나는 SQL-92 표준 구문을 결정하기 전에 자신의 독자적인 구문을 채택 가정합니다.

    다른 사람이 언급 한 것처럼, (+) 구문은 오라클이 외부 조인과 같은 결과를 달성하기 위해 년 동안 사용했던 오래된 독점 구문입니다. 나는 SQL-92 표준 구문을 결정하기 전에 자신의 독자적인 구문을 채택 가정합니다.

    하나에 해당하는 쿼리는 다음이 될 것이다 표준 SQL OUTER가 (지금은 모든 주요 RDBMS 구현에서 지원) 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;
    

    어떤 수단 :

  3. ==============================

    3.그것은 비 ANSI가 외부 왼쪽 표기법에 가입합니다. 혼란 외측은 "(+)"기호를 사용하여 구 조인 오라클을 시작으로하는 것은 외부 ISO 99에 의해 대체 된 구문 가입.

    그것은 비 ANSI가 외부 왼쪽 표기법에 가입합니다. 혼란 외측은 "(+)"기호를 사용하여 구 조인 오라클을 시작으로하는 것은 외부 ISO 99에 의해 대체 된 구문 가입.

  4. from https://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-clause by cc-by-sa and MIT license