이 섹션에서는 다음에 대해 설명합니다.SQL호환 하위 쿼리 사설 토토식 사용 가능 에서PostgreSQL. 모든 이 섹션에 설명된 사설 토토식 형식은 부울을 반환합니다. (참/거짓) 결과.
존재함(하위 쿼리 )
인수존재함은 임의선택문장 또는하위 쿼리. 하위 쿼리는 다음과 같이 평가됩니다. 행을 반환하는지 여부를 확인합니다. 최소한 반환된다면 한 행, 결과:존재함is"사실"; 하위 쿼리가 아니요를 반환하는 경우 행, 결과존재함이다"거짓".
하위 쿼리는 주변 변수를 참조할 수 있습니다. 쿼리는 한 번의 평가 중에 상수 역할을 합니다. 하위 쿼리입니다.
하위 쿼리는 일반적으로 다음을 수행할 만큼만 실행됩니다. 적어도 하나의 행이 반환되는지 여부를 확인합니다. 완료. 하위 쿼리를 작성하는 것은 현명하지 않습니다. 부작용(예: 시퀀스 함수 호출) 여부 부작용이 발생할지 예측하기 어려울 수 있습니다.
결과는 행이 있는지 여부에만 의존하기 때문에 반환되었으며 해당 행의 내용이 아닌 출력 하위 쿼리 목록은 일반적으로 흥미롭지 않습니다. 일반적인 코딩 관례는 모두 작성하는 것입니다존재함양식에서 테스트존재함(어디에서 1개 선택) ...). 그러나 이 규칙에는 다음과 같은 예외가 있습니다. 다음을 사용하는 하위 쿼리교차.
이 간단한 예는 내부 조인과 같습니다.col2, 그러나 최대 하나의 출력 행을 생성합니다. 각각탭1행이 있더라도 다중 일치탭2행:
탭1에서 열1 선택
존재하는 곳(col2 = tab1.col2인 tab2에서 1 선택);
사설 토토IN (값[, ...])
이 형태의 오른쪽IN은 괄호로 묶인 스칼라 사설 토토식 목록입니다. 결과는 다음과 같습니다"사실"만약 왼쪽 사설 토토식의 결과는 오른쪽 사설 토토식과 같습니다. 사설 토토. 이것은의 약칭 표기법입니다.
사설 토토 = 값1또는사설 토토 = 값2또는 ...
왼쪽 사설 토토식이 null을 산출하거나 동일한 오른쪽 값이 없으며 적어도 하나의 값이 있습니다. 오른쪽 사설 토토식은 null을 생성하며, 결과는IN구성은 false가 아닌 null이 됩니다. 이것은 부울 조합에 대한 SQL의 일반 규칙에 따라 null 값입니다.
참고:이 형태는IN이다 실제로 하위 쿼리 사설 토토은 아니지만 하위 쿼리와 같은 위치에 문서화하세요.IN.
사설 토토IN (하위 쿼리)
이 형태의 오른쪽IN은 괄호로 묶인 하위 쿼리이며 반환해야 합니다. 정확히 하나의 열입니다. 왼쪽 사설 토토식이 평가되고 하위 쿼리 결과의 각 행과 비교됩니다. 결과는INis"사실"동일한 하위 쿼리 행이 발견된 경우. 결과는 다음과 같습니다"거짓"동일한 행이 발견되지 않은 경우(다음 포함) 하위 쿼리가 행을 반환하지 않는 특별한 경우).
왼쪽 사설 토토식이 null을 산출하거나, 동일한 오른쪽 값이 없으며 적어도 하나의 값이 있습니다. 오른쪽 행은 null을 생성하며, 결과는IN구성은 false가 아닌 null이 됩니다. 이것은 부울 조합에 대한 SQL의 일반 규칙에 따라 null 값입니다.
와 마찬가지로존재함, 가정하는 것은 현명하지 않습니다 하위 쿼리가 완전히 평가됩니다.
(사설 토토 [, 사설 토토 ...]) IN (하위 쿼리)
이 형태의 오른쪽IN은 괄호로 묶인 하위 쿼리이며 반환해야 합니다. 정확히 사설 토토식에 있는 열 수만큼 왼쪽 목록. 왼쪽 사설 토토식이 평가되고 하위 쿼리 결과의 각 행을 행별로 비교합니다. 는 결과INis"사실"동일한 하위 쿼리 행이 발견된 경우. 는 결과는"거짓"같은 행이 없으면 발견됨(하위 쿼리가 no를 반환하는 특수한 경우 포함) 행).
평소와 같이 사설 토토식 또는 하위 쿼리 행의 null 값 SQL 부울 사설 토토식의 일반 규칙에 따라 결합됩니다. 두 행이 모두 해당하는 경우 동일한 것으로 간주됩니다. 멤버는 null이 아니고 동일합니다. 행이 동일하지 않은 경우 해당 멤버는 null이 아니고 동일하지 않습니다. 그렇지 않으면 해당 행 비교 결과를 알 수 없습니다(null). 모든 행의 경우 결과가 같지 않거나 Null이고 하나 이상의 Null이 있습니다. 그런 다음 결과는IN널입니다.
사설 토토다음에 없음(값[, ...])
이 형태의 오른쪽아님 안으로는 괄호로 묶인 스칼라 사설 토토식 목록입니다. 는 결과는"사실"왼쪽이면 사설 토토식의 결과가 오른쪽의 모든 결과와 같지 않습니다. 사설 토토. 이것은의 약칭 표기법입니다.
사설 토토 < 값1그리고사설 토토 < 값2그리고 ...
왼쪽 사설 토토식이 null을 산출하거나 동일한 오른쪽 값이 없으며 적어도 하나의 값이 있습니다. 오른쪽 사설 토토식은 null을 생성하며, 결과는포함되지 않음구성은 null이 되며, true가 아닙니다. 순진하게 기대할 수도 있다. 이는 SQL의 일반적인 규칙에 따른 것입니다. Null 값의 부울 조합에 대한 규칙입니다.
팁: x y에 없음이다 에 해당함NOT (x IN y)전체 사례. 그러나 null 값은 넘어질 가능성이 훨씬 더 높습니다. 함께 작업할 때 초보자포함되지 않음함께 일할 때보다IN. 최고야 가능하다면 자신의 상태를 긍정적으로 사설 토토하세요.
사설 토토다음에 없음(하위 쿼리)
이 형태의 오른쪽아님 안으로은 괄호로 묶인 하위 쿼리로, 정확하게 반환해야 합니다. 하나의 열. 왼쪽 사설 토토식이 평가되고 비교됩니다. 하위 쿼리 결과의 각 행에. 결과는포함되지 않음is"사실"만약 같지 않은 하위 쿼리 행만 발견됩니다(특수 쿼리 포함). 하위 쿼리가 행을 반환하지 않는 경우) 결과는 다음과 같습니다"거짓"동일한 행이 있는 경우 찾았습니다.
왼쪽 사설 토토식이 null을 산출하거나, 동일한 오른쪽 값이 없으며 적어도 하나의 값이 있습니다. 오른쪽 행은 null을 생성하며, 결과는포함되지 않음구성은 null이 되며 true가 아닙니다. 이것은 부울 조합에 대한 SQL의 일반 규칙에 따라 null 값입니다.
와 마찬가지로존재함, 가정하는 것은 현명하지 못해요 하위 쿼리가 완전히 평가됩니다.
(사설 토토 [, 사설 토토 ...]) 없음 (하위 쿼리)
이 형태의 오른쪽아님 안으로은 괄호로 묶인 하위 쿼리로, 정확하게 반환해야 합니다. 왼쪽 목록에 있는 사설 토토식 수만큼의 열입니다. 왼쪽 사설 토토식은 행별로 평가되고 비교됩니다. 하위 쿼리 결과의 각 행에. 결과는포함되지 않음is"사실"만약 같지 않은 하위 쿼리 행만 발견됩니다(특수 쿼리 포함). 하위 쿼리가 행을 반환하지 않는 경우) 결과는 다음과 같습니다"거짓"동일한 행이 있는 경우 찾았습니다.
평소와 같이 사설 토토식 또는 하위 쿼리 행의 null 값 SQL 부울 사설 토토식의 일반 규칙에 따라 결합됩니다. 두 행이 모두 해당하는 경우 동일한 것으로 간주됩니다. 멤버는 null이 아니고 동일합니다. 행이 동일하지 않은 경우 해당 멤버는 null이 아니고 동일하지 않습니다. 그렇지 않으면 해당 행 비교 결과를 알 수 없습니다(null). 모든 행의 경우 결과가 같지 않거나 Null이고 하나 이상의 Null이 있습니다. 그런 다음 결과는포함되지 않음널입니다.
사설 토토 연산자모두(하위 쿼리) 사설 토토 연산자일부 (하위 쿼리)
이 형태의 오른쪽모두은 괄호로 묶인 하위 쿼리이며 반환해야 합니다. 정확히 하나의 열입니다. 왼쪽 사설 토토식이 평가되고 주어진를 사용하여 하위 쿼리 결과의 각 행과 비교연산자, 이는 다음을 생성해야 합니다. 부울 결과. 결과는모두is"사실"참된 결과가 있다면 획득. 결과는 다음과 같습니다"거짓"만일 실제 결과가 발견되지 않았습니다(특수한 경우 포함). 하위 쿼리는 행을 반환하지 않습니다).
일부는의 동의어입니다.모두. IN다음과 동일함= 모두.
성공이 없고 적어도 하나의 성공이 없다면 오른쪽 행은 연산자 결과에 대해 null을 생성합니다. 의 결과모두구조물은 다음과 같습니다 null, false가 아닙니다. 이는 SQL의 일반적인 규칙에 따른 것입니다. null 값의 부울 조합의 경우.
다음과 같이존재함, 가정하는 것은 현명하지 못해요 하위 쿼리가 완전히 평가됩니다.
(사설 토토 [, 사설 토토 ...]) 연산자모두(하위 쿼리) (사설 토토 [, 사설 토토 ...]) 연산자일부 (하위 쿼리)
이 형태의 오른쪽모두은 괄호로 묶인 하위 쿼리이며 반환해야 합니다. 정확히 사설 토토식에 있는 열 수만큼 왼쪽 목록. 왼쪽 사설 토토식이 평가되고 다음을 사용하여 하위 쿼리 결과의 각 행을 행별로 비교합니다. 주어진연산자. 현재는 만=그리고<연산자는 행 단위로 허용됩니다.모두쿼리. 결과는모두is"사실"있는 경우 같거나 같지 않은 행이 각각 발견됩니다. 결과는 다음과 같습니다"거짓"해당 행을 찾을 수 없는 경우 (하위 쿼리가 다음을 반환하지 않는 특별한 경우 포함) 행).
평소와 같이 사설 토토식 또는 하위 쿼리 행의 null 값 SQL 부울 사설 토토식의 일반 규칙에 따라 결합됩니다. 두 행이 모두 해당하는 경우 동일한 것으로 간주됩니다. 멤버는 null이 아니고 동일합니다. 행이 동일하지 않은 경우 해당 멤버는 null이 아니고 동일하지 않습니다. 그렇지 않으면 해당 행 비교 결과를 알 수 없습니다(null). 에 있는 경우 하나 이상의 null 행 결과, 다음 결과모두거짓일 수 없습니다. true 또는 null이 됩니다.
사설 토토 연산자전체 (하위 쿼리)
이 형태의 오른쪽전체은 괄호로 묶인 하위 쿼리이며 반환해야 합니다. 정확히 하나의 열입니다. 왼쪽 사설 토토식이 평가되고 주어진를 사용하여 하위 쿼리 결과의 각 행과 비교연산자, 이는 다음을 생성해야 합니다. 부울 결과. 결과는전체is"사실"모든 행이 true인 경우 (하위 쿼리가 다음을 반환하지 않는 특별한 경우 포함) 행). 결과는 다음과 같습니다"거짓"있는 경우 잘못된 결과가 발견되었습니다.
포함되지 않음다음과 동일함< 전체.
실패는 없지만 적어도 하나의 실패가 있는 경우 오른쪽 행은 연산자 결과에 대해 null을 생성합니다. 의 결과전체구조물은 다음과 같습니다 null, 사실이 아닙니다. 이는 SQL의 일반적인 규칙에 따른 것입니다. null 값의 부울 조합의 경우.
다음과 같이존재함, 가정하는 것은 현명하지 못해요 하위 쿼리가 완전히 평가됩니다.
(사설 토토 [, 사설 토토 ...]) 연산자전체 (하위 쿼리)
이 형태의 오른쪽전체은 괄호로 묶인 하위 쿼리이며 반환해야 합니다. 정확히 사설 토토식에 있는 열 수만큼 왼쪽 목록. 왼쪽 사설 토토식이 평가되고 다음을 사용하여 하위 쿼리 결과의 각 행을 행별로 비교합니다. 주어진연산자. 현재는 만=그리고<연산자는 행 단위로 허용됩니다.전체쿼리. 결과는전체is"사실"모두라면 하위 쿼리 행이 각각 같거나 같지 않습니다( 하위 쿼리가 행을 반환하지 않는 특별한 경우). 결과는 다음과 같습니다"거짓"행이 발견되면 각각 같지 않거나 같습니다.
평소와 같이 사설 토토식 또는 하위 쿼리 행의 null 값 SQL 부울 사설 토토식의 일반 규칙에 따라 결합됩니다. 두 행이 모두 해당하는 경우 동일한 것으로 간주됩니다. 멤버는 null이 아니고 동일합니다. 행이 동일하지 않은 경우 해당 멤버는 null이 아니고 동일하지 않습니다. 그렇지 않으면 해당 행 비교 결과를 알 수 없습니다(null). 에 있는 경우 하나 이상의 null 행 결과, 다음 결과전체사실일 수 없습니다. false 또는 null이 됩니다.
(사설 토토 [, 사설 토토 ...]) 연산자 (하위 쿼리) (사설 토토 [, 사설 토토 ...]) 연산자 (사설 토토 [, 사설 토토 ...])
왼쪽은 스칼라 사설 토토식 목록입니다. 는 오른쪽은 다음의 스칼라 사설 토토식 목록일 수 있습니다. 동일한 길이 또는 괄호로 묶인 하위 쿼리를 반환해야 합니다. 사설 토토식에 있는 열 수와 정확히 일치합니다. 왼쪽. 또한 하위 쿼리는 더 이상 반환할 수 없습니다. 한 행보다 (0개의 행을 반환하는 경우 결과는 null이어야 합니다.) 왼쪽은 행 단위로 평가되고 비교됩니다. 단일 하위 쿼리 결과 행 또는 오른쪽 사설 토토 목록. 현재는 만=그리고<연산자는 허용됩니다 행별 비교. 결과는 다음과 같습니다"사실"두 행이 동일하거나 동일하지 않은 경우, 각각.
평소와 같이 사설 토토식 또는 하위 쿼리 행의 null 값 SQL 부울 사설 토토식의 일반 규칙에 따라 결합됩니다. 두 행이 모두 해당하는 경우 동일한 것으로 간주됩니다. 멤버는 null이 아니고 동일합니다. 행이 동일하지 않은 경우 해당 멤버는 null이 아니고 동일하지 않습니다. 그렇지 않으면 행 비교 결과를 알 수 없습니다(null).