> 데이터 베이스 > MySQL 튜토리얼 > 여러 버전에 걸쳐 PostgreSQL의 SELECT 절에서 여러 집합 반환 함수가 어떻게 작동합니까?

여러 버전에 걸쳐 PostgreSQL의 SELECT 절에서 여러 집합 반환 함수가 어떻게 작동합니까?

Patricia Arquette
풀어 주다: 2025-01-17 23:42:09
원래의
874명이 탐색했습니다.

How Do Multiple Set-Returning Functions Behave in PostgreSQL's SELECT Clause Across Different Versions?

PostgreSQL의 SELECT 문에서 여러 집합 반환 함수 처리: 버전별 분석

SELECT 문 내에서 여러 집합 반환 함수를 만날 때 PostgreSQL의 동작은 데이터베이스 버전에 따라 크게 다릅니다.

PostgreSQL 10 이상:

버전 10 이상에서는 이러한 함수가 동기적으로 실행됩니다. 출력은 가장 많은 행을 생성하는 함수가 결과 집합의 총 행 수를 지정하도록 구성됩니다. 더 짧은 함수 출력은 NULL 값으로 채워져 이 정렬을 유지하고 효과적으로 교차 조인과 같은 결과를 생성합니다.

PostgreSQL 9.6 이하:

9.6 버전 이전에는 결과가 크게 다릅니다. 생성된 총 행 수는 각 집합 반환 함수의 행 수에 대한 최소 공배수(LCM)와 같습니다. 이는 특히 행 개수가 공통 요소를 공유하지 않는 경우 예측 불가능하고 잠재적으로 바람직하지 않은 결과를 초래할 수 있습니다.

예시:

쿼리를 살펴보겠습니다.

<code class="language-sql">SELECT generate_series(1, 3), generate_series(5, 7);</code>
로그인 후 복사

PostgreSQL 10 출력:

<code> generate_series | generate_series 
-----------------+-----------------
               1 |               5
               2 |               6
               3 |               7
               NULL |               NULL
               NULL |               NULL
               NULL |               NULL</code>
로그인 후 복사

PostgreSQL 9.6- 출력:

<code> generate_series | generate_series 
-----------------+-----------------
               1 |               5
               2 |               6
               3 |               7
               1 |               5
               2 |               6
               3 |               7
               1 |               5
               2 |               6
               3 |               7</code>
로그인 후 복사

주요 고려 사항:

  • PostgreSQL 10 이상에서는 CASECOALESCE 표현식 내에서 집합 반환 함수의 사용을 금지합니다.
  • 제어력을 향상하고 예측 가능한 결과를 얻으려면 LATERAL JOIN 목록에 여러 집합 반환 함수를 직접 포함하는 대신 ROWS FROM (...)과 함께 SELECT을 사용하는 것이 좋습니다.

관련 문서:

위 내용은 여러 버전에 걸쳐 PostgreSQL의 SELECT 절에서 여러 집합 반환 함수가 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿