반응형
오라클 : WHERE 절에서`(+)`는 무엇을합니까?
마이그레이션중인 (일반화) Oracle 기반 애플리케이션에서 다음을 발견했습니다 .
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 절에 있는가? 나는 그것이 전에 그렇게 사용되는 것을 본 적이 없습니다.
"="의 어느쪽에 "(+)가 켜져 있는지에 따라 LEFT OUTER 또는 RIGHT OUTER 조인 (이 경우에는 왼쪽 외부 조인)을 나타냅니다. 코드를 짧게 만드는 것을 좋아하기 때문에 먼저 배웠습니다.
가독성을 위해 사용하지 않는 것이 가장 좋습니다.
다른 사람들이 언급했듯이 (+)
구문은 Oracle이 .NET Framework와 동일한 결과를 달성하기 위해 수년 동안 사용했던 구식이며 독점 구문입니다 OUTER JOIN
. SQL-92가 표준 구문을 결정하기 전에 독점 구문을 채택했다고 가정합니다.
표준 SQL OUTER JOIN
구문 (현재 모든 주요 RDBMS 구현에서 지원됨)을 사용하여 보여준 것과 동등한 쿼리 는 다음과 같습니다.
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
경우 해당 행을 포함합니다 (에Table1
일치하는 행이 여러 개인 경우 콘텐츠 반복Table2
). - 에 일치하는 행이없는 경우 쿼리 결과의 모든 열에
Table2
사용NULL
합니다Table2
.
ANSI가 아닌 왼쪽 외부 조인 표기법입니다. Oracle9i부터는 '(+)'표기법을 사용하는 혼란스러운 외부 조인 구문이 ISO 99 외부 조인 구문으로 대체되었습니다.
참조 URL : https://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-clause
반응형
'Development Tip' 카테고리의 다른 글
Numpy 크기 조정 / 크기 조정 이미지 (0) | 2021.01.06 |
---|---|
모든 자바 애플릿은 어디로 갔습니까? (0) | 2021.01.06 |
PHP에서 현재 함수를 실행하는 코드 줄과 파일을 얻습니까? (0) | 2021.01.06 |
표준 Java API 만있는 javax.xml.transform.Transformer의 예쁜 인쇄 출력 (들여 쓰기 및 문서 유형 위치 지정) (0) | 2021.01.06 |
정규식 부정 미리보기 (0) | 2021.01.06 |