PostgreSQL UNION 연산자를 사용하여 여러 쿼리의 결과 집합을 단일 결과 집합으로 결합 하는 방법

 

UNION은 두 쿼리의 결과 집합을 결합 하는 연산자입니다.

 

SELECT select_list_1
FROM table_expresssion_1
UNION
SELECT select_list_2
FROM table_expression_2

- 두 쿼리의 선택 목록에 있는 열의 수와 순서는 동일해야합니다.

- 데이터 유형은 호환 가능해야 합니다.

 


DROP TABLE IF EXISTS top_rated_films;
CREATE TABLE top_rated_films(
	title VARCHAR NOT NULL,
	release_year SMALLINT
);

DROP TABLE IF EXISTS most_popular_films;
CREATE TABLE most_popular_films(
	title VARCHAR NOT NULL,
	release_year SMALLINT
);

INSERT INTO 
   top_rated_films(title,release_year)
VALUES
   ('The Shawshank Redemption',1994),
   ('The Godfather',1972),
   ('12 Angry Men',1957);

INSERT INTO 
   most_popular_films(title,release_year)
VALUES
   ('An American Pickle',2020),
   ('The Godfather',1972),
   ('Greyhound',2020);

 

SELECT * FROM top_rated_films;

 

SELECT * FROM most_popular_films;

 

1) 간단한 PostgreSQL UNION 예제

SELECT * FROM top_rated_films
UNION
SELECT * FROM most_popular_films;

- UNION연산자가 하나의 중복 행을 제거 하기 때문에 결과 집합에는 결과 집합에 5개의 행이 포함됩니다 .

 

2) PostgreSQL UNION ALL 예제

SELECT * FROM top_rated_films
UNION ALL
SELECT * FROM most_popular_films;

-  중복 행은 결과 집합에 유지됩니다.

 

3) ORDER BY 절이 있는 PostgreSQL UNION ALL 예제

SELECT * FROM top_rated_films
UNION ALL
SELECT * FROM most_popular_films
ORDER BY title;

- ORDER BY각 쿼리의 끝에 절 을 배치하면 결합된 결과 집합이 예상대로 정렬되지 않습니다.

- UNION연산자가 각 쿼리의 정렬된 결과 집합을 결합 할 때 최종 결과 집합의 행 순서를 보장하지 않기 때문입니다.

반응형

'SW ENGINEERING > Postgres' 카테고리의 다른 글

[PostgreSQL] BASIC - EXCEPT  (0) 2021.09.03
[PostgreSQL] BASIC - INTERSECT  (0) 2021.09.03
[PostgreSQL] BASIC - HAVING  (0) 2021.09.02
[PostgreSQL] BASIC - GROUP BY  (0) 2021.09.02
[PostgreSQL] BASIC - INNER JOIN  (0) 2021.09.02
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기