지원 버전 :현재(17) /16 / 15 / 14 / 13
개발 버전 :18 / Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

9.24. 하위 쿼리 표현#

이 섹션은를 설명합니다.SQL-공동 서브 쿼리 표현식에서 사용할 수 있습니다PostgreSQL. 이 섹션에 기록 된 모든 표현식 양식은 부울 (True/False) 결과를 반환합니다.

9.24.1.존재 #

존재 (SubQuery)

의 주장존재임의입니다select성명서 또는SubQuery. 하위 쿼리는 행을 반환하는지 여부를 결정하기 위해 평가됩니다. 하나 이상의 행을 반환하면 결과는존재​​istrue; 하위 쿼리가 행을 반환하지 않으면의 결과는13620_13628is거짓.

하위 쿼리는 주변 쿼리의 변수를 참조 할 수 있으며, 이는 하위 쿼리를 한 번 평가하는 동안 상수로 작용할 수 있습니다.

13857_14145

결과는 행이 반환되는지 여부에만 의존하기 때문에 해당 행의 내용이 아닌 하위 퀘스트의 출력 목록은 일반적으로 중요하지 않습니다. 일반적인 코딩 협약은 모든 것을 쓰는 것입니다존재양식의 테스트존재합니다 (Select 1 where ...). 그러나이 규칙에는 사용하는 하위 쿼리와 같은 예외가 있습니다Intersect.

이 간단한 예제는 내부 조인과 같습니다col2, 그러나 각각에 대해 최대 하나의 출력 행을 생성합니다tab1행, 몇 가지 일치하는 경우에도tab2행 :

COL1을 선택하십시오
Tab1에서
존재하는 곳 (tab2에서 1을 선택하여 col2 = tab1.col2);

9.24.2.in #

표현in (SubQuery)

오른쪽은 괄호로 된 하위 쿼리이며 정확히 하나의 열을 반환해야합니다. 왼쪽 표현식이 평가되고 하위 퀘스트 결과의 각 행과 비교됩니다. 의 결과inistrue동일한 하위 쿼리 행이있는 경우. 결과는입니다.거짓15774_15858

왼쪽 표현이 널을 생산하거나 같은 오른쪽 값이없고 적어도 하나의 오른쪽 행이 널을 생산하는 경우in구성은 거짓이 아닌 null이됩니다. 이것은 널 값의 부울 조합에 대한 SQL의 정상 규칙에 따른 것입니다.

with존재, 하위 쿼리가 완전히 평가 될 것이라고 가정하는 것은 현명하지 않습니다.

row_constructorin (SubQuery)

이 형태의 왼쪽in에 설명 된대로 행 생성자입니다.섹션 4.2.13. 오른쪽은 괄호로 된 서브 쿼리이며 왼쪽 행에 표현식이있는 것만 큼 많은 열을 반환해야합니다. 왼쪽 표현식은 평가 및 하위 퀘스트 결과의 각 행과 비교됩니다. 의 결과inistrue동일 하위 쿼리 행이있는 경우. 결과는입니다.거짓동일한 행이 발견되지 않은 경우 (하위 쿼리가 행이없는 경우를 포함하여)..

평소와 같이 행의 널 값은 SQL 부울 표현식의 일반 규칙에 따라 결합됩니다. 해당하는 모든 멤버가 무감각하고 같으면 두 행이 동일하게 간주됩니다. 해당 구성원이 널이없고 불평등 한 경우 행은 불평등합니다. 그렇지 않으면 해당 행 비교의 결과는 알려지지 않았습니다 (null). 모든 약당 결과가 불평등하거나 널이면 적어도 하나의 널이 있으면의 결과는입니다.inis null.

9.24.3. #

표현in (SubQuery)

오른쪽은 괄호로 된 서브 쿼리이며 정확히 하나의 열을 반환해야합니다. 왼쪽 표현식이 평가되고 하위 퀘스트 결과의 각 행과 비교됩니다. 의 결과istrue불평등 한 서브 쿼리 행만 발견하면 (하위 쿼리가 행을 반환하는 경우 포함). 결과는입니다.거짓동일한 행이있는 경우.

왼쪽 표현이 널을 생산하거나 같은 오른쪽 값이없고 적어도 하나의 오른쪽 행이 Null을 생산하는 경우구성은 사실이 아니라 null이됩니다. 이것은 널 값의 부울 조합에 대한 SQL의 정상 규칙에 따른 것입니다.

with존재, 하위 쿼리가 완전히 평가 될 것이라고 가정하는 것은 현명하지 않습니다.

row_constructorin (SubQuery)

이 형태의 왼쪽에 설명 된대로 행 생성자입니다.섹션 4.2.1319496_19750istrue불평등 한 서브 쿼리 행만 발견되는 경우 (하위 퀘스트가 행이없는 경우 포함). 결과는입니다.false동일한 행이있는 경우.

평소와 같이 행의 널 값은 SQL 부울 표현식의 일반 규칙에 따라 결합됩니다. 해당하는 모든 멤버가 무감각하고 같으면 두 행이 동일하게 간주됩니다. 해당 구성원이 널이없고 불평등 한 경우 행은 불평등합니다. 그렇지 않으면 해당 행 비교의 결과는 알려지지 않았습니다 (null). 모든 약당 결과가 불평등하거나 널이면 적어도 하나의 널이 있으면의 결과는입니다.is null.

9.24.4.Any/일부 #

표현 운영자any (SubQuery)표현 운영자일부 (SubQuery)

오른쪽은 괄호로 된 서브 쿼리이며 정확히 하나의 열을 반환해야합니다. 왼쪽 표현식이 평가되고 주어진 것을 사용하여 하위 퀘스트 결과의 각 행과 비교됩니다.운영자, 부울 결과를 산출해야합니다. 의 결과Anyistrue21605_21654거짓진정한 결과가 발견되지 않은 경우 (하위 쿼리가 행이없는 경우를 포함하여)..

일부동의어입니다Any. in= Any.

성공이없고 적어도 하나의 오른쪽 행이 운영자의 결과에 null을 얻는 경우의 결과는입니다.Any22139_22263

with존재, 하위 쿼리가 완전히 평가 될 것이라고 가정하는 것은 현명하지 않습니다.

row_constructor 운영자Any (SubQuery)row_constructor 운영자일부 (SubQuery)

이 형태의 왼쪽any에 설명 된대로 행 생성자입니다.섹션 4.2.13. 오른쪽은 괄호로 된 서브 쿼리이며 왼쪽 행에 표현식이있는 것만 큼 많은 열을 반환해야합니다. 왼쪽 표현식은 주어진 퀘스트를 사용하여 하위 쿼리 결과의 각 행과 비교하여 평가되고 비교됩니다.운영자. 의 결과anyistrue비교가 하위 퀘스트 행에 대해 true를 반환하는 경우. 결과는입니다.거짓비교가 모든 서브 쿼리 행에 대해 거짓을 반환하는 경우 (하위 쿼리가 행이없는 경우). 하위 쿼리 행과 비교하지 않으면 결과는 널입니다. 적어도 하나의 비교는 null을 반환합니다.

참조섹션 9.25.5행 생성자 비교의 의미에 대한 자세한 내용.

9.24.5.all #

표현 운영자all (SubQuery)

오른쪽은 괄호로 된 하위 쿼리이며 정확히 하나의 열을 반환해야합니다. 왼쪽 표현식이 평가되고 주어진 것을 사용하여 하위 퀘스트 결과의 각 행과 비교됩니다.운영자, 부울 결과를 낳아야합니다. 의 결과allistrue모든 행이 true를 산출하는 경우 (서브 쿼리가 행이없는 경우 포함). 결과는입니다.false25022_25167

와 동일합니다< all.

with존재, 하위 쿼리가 완전히 평가 될 것이라고 가정하는 것은 현명하지 않습니다.

row_constructor 운영자25534_25542SubQuery)

이 형태의 왼쪽all에 설명 된대로 행 생성자입니다.섹션 4.2.13. 오른쪽은 괄호로 된 서브 쿼리이며 왼쪽 행에 표현식이있는 것만 큼 많은 열을 반환해야합니다. 왼쪽 표현식은 주어진 퀘스트를 사용하여 하위 쿼리 결과의 각 행과 비교하여 평가되고 비교됩니다.운영자. 의 결과allistrue26257_26384거짓비교가 하위 쿼리 행에 대해 False를 반환하는 경우. 하위 쿼리 행과 비교하지 않으면 결과는 널입니다. 적어도 하나의 비교가 널 리턴됩니다..

참조섹션 9.25.5행 생성자 비교의 의미에 대한 자세한 내용.

9.24.6. 단일 줄 비교#

row_constructor 운영자(SubQuery)

왼쪽은에 설명 된 바와 같이 행 생성자입니다.섹션 4.2.13. 오른쪽은 괄호로 된 서브 쿼리이며 왼쪽 행에 표현식이있는 것만 큼 많은 열을 반환해야합니다. 또한 하위 쿼리는 둘 이상의 행을 반환 할 수 없습니다. (0 행을 반환하는 경우 결과는 Null로 표시됩니다.) 왼쪽이 평가되어 단일 서브 쿼리 결과 행과 비교됩니다..

참조섹션 9.25.5행 생성자 비교의 의미에 대한 자세한 내용.