PostgreSQL Union, Union ALL 예제 포함

⚡ 스마트 요약

PostgreSQL UNION은 두 개 이상의 SELECT 문의 결과를 하나의 결과 집합으로 결합하고 중복 행을 제거하는 반면, UNION ALL은 모든 행을 유지하므로 중복이 중요하지 않은 경우 더 빠른 옵션을 제공합니다.

  • 🔗 콤바인: UNION은 여러 SELECT 문의 행을 하나의 결과 집합으로 병합합니다.
  • 🧹 중복 : UNION은 중복된 행을 제거하는 반면, UNION ALL은 일치하는 모든 행을 유지합니다.
  • 📐 규칙 : 각 SELECT 문은 호환 가능한 데이터 형식을 가진 동일한 수의 열을 반환해야 합니다.
  • ↕️ 주문: 마지막에 ORDER BY 절 하나만 추가하면 전체 결과 집합이 정렬됩니다.
  • 성능 : UNION ALL은 중복 제거 단계를 건너뛰기 때문에 더 빠르게 실행됩니다.
  • 🤖 AI 도움말: AI 비서가 열을 정렬하고 UNION과 UNION ALL 중에서 선택합니다.

PostgreSQL UNION 및 UNION ALL

PostgreSQL 노동 조합?

The PostgreSQL UNION 연산자는 두 개 이상의 SELECT 명령문에서 나온 결과 집합을 하나의 결과 집합으로 결합하는 데 사용됩니다. SELECT 명령문의 결과에서 중복된 행은 제거됩니다. UNION 연산자는 두 가지 조건에서 작동합니다.

  • SELECT 쿼리는 동일한 개수의 열을 반환해야 합니다.
  • 해당하는 모든 열의 데이터 유형은 호환 가능해야 합니다.

UNION 연산자는 일반적으로 완벽하게 정규화되지 않은 관련 테이블의 데이터를 결합하는 데 사용됩니다.

통사론

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

위의 매개변수에 대한 설명은 다음과 같습니다.

표현식_1, 표현식_2, … 표현식_n은 검색해야 하는 계산 또는 열입니다.

테이블은 레코드를 검색해야 하는 테이블입니다.

WHERE 조건은 레코드를 검색하기 위해 충족해야 하는 조건입니다.

참고 : UNION 연산자는 중복을 반환하지 않으므로 UNION DISTINCT를 사용해도 결과에는 영향을 미치지 않습니다.

PostgreSQL 노동 조합

UNION 연산자는 다음과 같은 방식으로 중복을 제거합니다. 구별 선택 그렇습니다. 이를 증명해 보이겠습니다. Demo라는 데이터베이스에는 다음과 같은 테이블이 있습니다.

도서:

PostgreSQL 노동 조합

가격:

PostgreSQL 노동 조합

다음 명령을 실행해 보겠습니다.

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

이 명령은 다음을 반환합니다.

PostgreSQL 노동 조합

id 열은 Book 테이블과 Price 테이블 모두에 나타납니다. 그러나 결과에는 한 번만 나타납니다. 그 이유는 PostgreSQL UNION 연산자는 중복을 반환하지 않습니다.

PostgreSQL 유니온 올

이 연산자는 중복을 제거하지 않고 여러 SELECT 명령문의 결과 집합을 결합합니다. 이 연산자는 각 SELECT 명령문이 유사한 데이터 유형의 결과 집합에서 유사한 수의 필드를 갖도록 요구합니다.

구문 :

SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)]
UNION ALL
SELECT expression_1, expression_2, ... expression_n
FROM tables
[WHERE condition(s)];

위의 매개변수에 대한 설명은 다음과 같습니다.

표현식_1, 표현식_2, … 표현식_n은 검색해야 하는 계산 또는 열입니다.

테이블은 레코드를 검색해야 하는 테이블입니다.

WHERE 조건은 레코드를 검색하기 위해 충족해야 하는 조건입니다.

참고 : 두 SELECT 문은 동일한 개수의 표현식을 포함해야 합니다.

다음 표를 사용하겠습니다.

도서:

PostgreSQL 유니온 올

가격:

PostgreSQL 유니온 올

다음 명령을 실행하십시오.

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

다음을 반환해야 합니다.

PostgreSQL 유니온 올

중복 항목은 제거되지 않았습니다.

주문

The PostgreSQL UNION 연산자는 ORDER BY 절과 함께 사용하여 쿼리 결과를 정렬할 수 있습니다. 이를 보여주기 위해 다음 테이블을 사용합니다.

가격:

주문

가격2:

주문

다음은 ORDER BY 절과 함께 UNION 연산자를 사용하는 방법을 보여주는 명령입니다.

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

이 명령은 다음을 반환합니다.

주문

기록은 가격 열을 기준으로 정렬되었습니다. 이 절은 기본적으로 레코드를 오름차순으로 정렬합니다. 내림차순으로 정렬하려면 아래와 같이 DESC 절을 추가하세요.

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

이 명령은 다음을 반환합니다.

주문

가격 열을 기준으로 내림차순으로 레코드가 정렬되었습니다.

Union은 언제 사용하고 Union All은 언제 사용해야 할까요?

구조가 비슷하지만 어떤 이유로 분리해야 하는 여러 테이블이 있을 때 UNION 연산자를 사용하세요. 중복 레코드를 제거하거나 없애야 할 때 유용합니다.

중복된 레코드를 제거하거나 없앨 필요가 없을 때는 UNION ALL 연산자를 사용하십시오.

pgAdmin 사용

이제 pgAdmin을 사용하여 이 세 가지 작업을 모두 수행하는 방법을 살펴보겠습니다.

이용 방법 PostgreSQL pgAdmin을 사용한 연합

다음은 사용 방법에 대한 단계별 과정입니다. PostgreSQL pgAdmin을 통한 UNION:

단계 1) pgAdmin 계정에 로그인하세요.

단계 2) 왼쪽 탐색 모음에서 데이터베이스를 클릭한 다음 데모를 클릭합니다.

  PostgreSQL pgAdmin을 사용한 연합

단계 3) 쿼리 편집기에 쿼리를 입력합니다.

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

단계 4) 실행 버튼을 클릭하세요.

  PostgreSQL pgAdmin을 사용한 연합

다음을 반환해야 합니다.

  PostgreSQL pgAdmin을 사용한 연합

유니온 올

단계 1) pgAdmin 계정에 로그인하세요.

단계 2) 왼쪽 탐색 모음에서 데이터베이스를 클릭한 다음 데모를 클릭합니다.

  PostgreSQL pgAdmin을 사용하여 모두 통합

단계 3) 쿼리 편집기에 쿼리를 입력합니다.

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

단계 4) 실행 버튼을 클릭하세요.

  PostgreSQL pgAdmin을 사용하여 모두 통합

다음을 반환해야 합니다.

  PostgreSQL pgAdmin을 사용하여 모두 통합

주문

UNION ALL 연산자는 ORDER BY 절과 결합하여 결과 집합의 결과를 정렬할 수 있습니다. 예를 들어:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

이 명령은 다음을 반환합니다.

  PostgreSQL pgAdmin을 사용하여 주문

결과가 주문되었습니다.

이 튜토리얼에 사용된 데이터베이스 다운로드

자주 묻는 질문

UNION ALL은 단순히 행들을 연결하기 때문에 더 빠릅니다. 반면 UNION은 중복을 제거하기 위해 결합된 행들을 정렬하거나 해싱해야 하므로 오버헤드가 발생합니다. 중복이 중요하지 않은 경우에는 UNION ALL이 더 효율적인 선택입니다.

예. UNION 구문 내의 모든 SELECT 문은 동일한 개수의 열을 반환해야 하며, 일치하는 열들은 동일한 순서로 호환되는 데이터 형식을 가져야 합니다. 그렇지 않으면 문제가 발생합니다. PostgreSQL 오류가 발생하여 쿼리가 실패합니다.

예. UNION은 열 이름이 아닌 위치를 기준으로 열을 일치시키기 때문에 열 이름이 다를 수 있습니다. 하지만 데이터 형식은 여전히 ​​호환되어야 하며, 결과 집합은 첫 번째 SELECT 문에서 사용한 열 이름을 사용합니다.

UNION은 두 결과 집합의 행을 세로로 쌓아 하나의 열 목록을 만들고 중복을 제거합니다. JOIN은 관련 키를 기준으로 서로 다른 테이블의 열을 가로로 결합하므로 행을 추가하는 대신 너비를 늘립니다.

ORDER BY는 최종 결합 결과를 정렬합니다. PostgreSQL 마지막 SELECT 문 뒤에 ORDER BY 절을 하나만 배치할 수 있습니다. 개별 쿼리를 먼저 정렬하는 것은 행이 병합된 후에는 의미가 없습니다.

GitHub Copilot과 같은 AI 비서는 각 SELECT 문의 열 목록을 정렬하고, 데이터 유형이 일치하지 않는 부분을 표시하며, 중복 항목을 유지해야 하는지 여부에 따라 UNION 또는 UNION ALL을 권장하여 일반적인 쿼리 오류를 줄여줍니다.

네. AI 어시스턴트는 테이블과 목표를 분석하여 중복 행이 발생할 수 있는지, 그리고 중복 행이 의미가 있는지 판단한 후, 중복 행이 허용되어 속도가 향상될 경우에는 UNION ALL을, 중복 행을 제거해야 하는 경우에는 UNION을 제안할 수 있습니다.

UNION은 두 쿼리 중 하나에 있는 행을 반환합니다. INTERSECT는 두 쿼리 모두에 있는 행만 반환하고, EXCEPT는 첫 번째 쿼리에는 있지만 두 번째 쿼리에는 없는 행을 반환합니다. 세 가지 모두 기본적으로 중복을 제거합니다.

이 게시물을 요약하면 다음과 같습니다.