이 섹션은를 설명합니다.SQL-공동 서브 쿼리 표현식에서 사용할 수 있습니다PostgreSQL. 이 섹션에 기록 된 모든 표현식 양식은 부울 (True/False) 결과를 반환합니다.
존재
#존재 (SubQuery
)
의 주장존재
임의입니다select
성명서 또는SubQuery. 하위 쿼리는 행을 반환하는지 여부를 결정하기 위해 평가됩니다. 하나 이상의 행을 반환하면 결과는존재
is“true”; 하위 쿼리가 행을 반환하지 않으면의 결과는13620_13628
is“거짓”.
하위 쿼리는 주변 쿼리의 변수를 참조 할 수 있으며, 이는 하위 쿼리를 한 번 평가하는 동안 상수로 작용할 수 있습니다.
13857_14145
결과는 행이 반환되는지 여부에만 의존하기 때문에 해당 행의 내용이 아닌 하위 퀘스트의 출력 목록은 일반적으로 중요하지 않습니다. 일반적인 코딩 협약은 모든 것을 쓰는 것입니다존재
양식의 테스트존재합니다 (Select 1 where ...)
. 그러나이 규칙에는 사용하는 하위 쿼리와 같은 예외가 있습니다Intersect
.
이 간단한 예제는 내부 조인과 같습니다col2
, 그러나 각각에 대해 최대 하나의 출력 행을 생성합니다tab1
행, 몇 가지 일치하는 경우에도tab2
행 :
COL1을 선택하십시오 Tab1에서 존재하는 곳 (tab2에서 1을 선택하여 col2 = tab1.col2);
in
#표현
in (SubQuery
)
오른쪽은 괄호로 된 하위 쿼리이며 정확히 하나의 열을 반환해야합니다. 왼쪽 표현식이 평가되고 하위 퀘스트 결과의 각 행과 비교됩니다. 의 결과in
is“true”동일한 하위 쿼리 행이있는 경우. 결과는입니다.“거짓”15774_15858
왼쪽 표현이 널을 생산하거나 같은 오른쪽 값이없고 적어도 하나의 오른쪽 행이 널을 생산하는 경우in
구성은 거짓이 아닌 null이됩니다. 이것은 널 값의 부울 조합에 대한 SQL의 정상 규칙에 따른 것입니다.
with존재
, 하위 쿼리가 완전히 평가 될 것이라고 가정하는 것은 현명하지 않습니다.
row_constructor
in (SubQuery
)
이 형태의 왼쪽in
에 설명 된대로 행 생성자입니다.섹션 4.2.13. 오른쪽은 괄호로 된 서브 쿼리이며 왼쪽 행에 표현식이있는 것만 큼 많은 열을 반환해야합니다. 왼쪽 표현식은 평가 및 하위 퀘스트 결과의 각 행과 비교됩니다. 의 결과in
is“true”동일 하위 쿼리 행이있는 경우. 결과는입니다.“거짓”동일한 행이 발견되지 않은 경우 (하위 쿼리가 행이없는 경우를 포함하여)..
평소와 같이 행의 널 값은 SQL 부울 표현식의 일반 규칙에 따라 결합됩니다. 해당하는 모든 멤버가 무감각하고 같으면 두 행이 동일하게 간주됩니다. 해당 구성원이 널이없고 불평등 한 경우 행은 불평등합니다. 그렇지 않으면 해당 행 비교의 결과는 알려지지 않았습니다 (null). 모든 약당 결과가 불평등하거나 널이면 적어도 하나의 널이 있으면의 결과는입니다.in
is null.
#표현
in (SubQuery
)
오른쪽은 괄호로 된 서브 쿼리이며 정확히 하나의 열을 반환해야합니다. 왼쪽 표현식이 평가되고 하위 퀘스트 결과의 각 행과 비교됩니다. 의 결과is“true”불평등 한 서브 쿼리 행만 발견하면 (하위 쿼리가 행을 반환하는 경우 포함). 결과는입니다.“거짓”동일한 행이있는 경우.
왼쪽 표현이 널을 생산하거나 같은 오른쪽 값이없고 적어도 하나의 오른쪽 행이 Null을 생산하는 경우구성은 사실이 아니라 null이됩니다. 이것은 널 값의 부울 조합에 대한 SQL의 정상 규칙에 따른 것입니다.
with존재
, 하위 쿼리가 완전히 평가 될 것이라고 가정하는 것은 현명하지 않습니다.
row_constructor
in (SubQuery
)
이 형태의 왼쪽에 설명 된대로 행 생성자입니다.섹션 4.2.1319496_19750
is“true”불평등 한 서브 쿼리 행만 발견되는 경우 (하위 퀘스트가 행이없는 경우 포함). 결과는입니다.“false”동일한 행이있는 경우.
평소와 같이 행의 널 값은 SQL 부울 표현식의 일반 규칙에 따라 결합됩니다. 해당하는 모든 멤버가 무감각하고 같으면 두 행이 동일하게 간주됩니다. 해당 구성원이 널이없고 불평등 한 경우 행은 불평등합니다. 그렇지 않으면 해당 행 비교의 결과는 알려지지 않았습니다 (null). 모든 약당 결과가 불평등하거나 널이면 적어도 하나의 널이 있으면의 결과는입니다.is null.
Any
/일부
#표현
운영자
any (SubQuery
)표현
운영자
일부 (SubQuery
)
오른쪽은 괄호로 된 서브 쿼리이며 정확히 하나의 열을 반환해야합니다. 왼쪽 표현식이 평가되고 주어진 것을 사용하여 하위 퀘스트 결과의 각 행과 비교됩니다.운영자
, 부울 결과를 산출해야합니다. 의 결과Any
is“true”21605_21654“거짓”진정한 결과가 발견되지 않은 경우 (하위 쿼리가 행이없는 경우를 포함하여)..
일부
동의어입니다Any
. in
= Any
.
성공이없고 적어도 하나의 오른쪽 행이 운영자의 결과에 null을 얻는 경우의 결과는입니다.Any
22139_22263
with존재
, 하위 쿼리가 완전히 평가 될 것이라고 가정하는 것은 현명하지 않습니다.
row_constructor
운영자
Any (SubQuery
)row_constructor
운영자
일부 (SubQuery
)
이 형태의 왼쪽any
에 설명 된대로 행 생성자입니다.섹션 4.2.13. 오른쪽은 괄호로 된 서브 쿼리이며 왼쪽 행에 표현식이있는 것만 큼 많은 열을 반환해야합니다. 왼쪽 표현식은 주어진 퀘스트를 사용하여 하위 쿼리 결과의 각 행과 비교하여 평가되고 비교됩니다.운영자
. 의 결과any
is“true”비교가 하위 퀘스트 행에 대해 true를 반환하는 경우. 결과는입니다.“거짓”비교가 모든 서브 쿼리 행에 대해 거짓을 반환하는 경우 (하위 쿼리가 행이없는 경우). 하위 쿼리 행과 비교하지 않으면 결과는 널입니다. 적어도 하나의 비교는 null을 반환합니다.
참조섹션 9.25.5행 생성자 비교의 의미에 대한 자세한 내용.
all
#표현
운영자
all (SubQuery
)
오른쪽은 괄호로 된 하위 쿼리이며 정확히 하나의 열을 반환해야합니다. 왼쪽 표현식이 평가되고 주어진 것을 사용하여 하위 퀘스트 결과의 각 행과 비교됩니다.운영자
, 부울 결과를 낳아야합니다. 의 결과all
is“true”모든 행이 true를 산출하는 경우 (서브 쿼리가 행이없는 경우 포함). 결과는입니다.“false”25022_25167
와 동일합니다
< all
.
with존재
, 하위 쿼리가 완전히 평가 될 것이라고 가정하는 것은 현명하지 않습니다.
row_constructor
운영자
25534_25542SubQuery
)
이 형태의 왼쪽all
에 설명 된대로 행 생성자입니다.섹션 4.2.13. 오른쪽은 괄호로 된 서브 쿼리이며 왼쪽 행에 표현식이있는 것만 큼 많은 열을 반환해야합니다. 왼쪽 표현식은 주어진 퀘스트를 사용하여 하위 쿼리 결과의 각 행과 비교하여 평가되고 비교됩니다.운영자
. 의 결과all
is“true”26257_26384“거짓”비교가 하위 쿼리 행에 대해 False를 반환하는 경우. 하위 쿼리 행과 비교하지 않으면 결과는 널입니다. 적어도 하나의 비교가 널 리턴됩니다..
참조섹션 9.25.5행 생성자 비교의 의미에 대한 자세한 내용.