SQL

SQL 테이블 행연결(UNION, UNION ALL)

봄다온 2025. 2. 5. 11:38

서로 다른 테이블을 세로 방향으로 합치기 위해선 2개의 쿼리문 사이에 연결 명령어를 추가하면 된다.
이때 2가지 조건을 충족해야한다.

1.두 SQL은 서로 컬럼의 개수가 동일할것
2.두 SQL의 컬럼의 타입이 동일할 것

UNION, UNION ALL

# UNION
두 테이블 합집합. 서로 중복되는 행은 1개만 출력
(select * from drink)
union
(select * from drink);
 id |     name     | quantity | shelf_life | volume
----+--------------+----------+------------+--------
  3 | 무안단물     |       41 |         35 |    600
  1 | 에너지드링크 |       36 |         30 |    300
  5 | 더맛         |        3 |         35 |   1000
  4 | 순진맥주     |       47 |         60 |    900
  2 | 오렌지주스   |       38 |         25 |   1500
(5 rows)

# UNION ALL
두 테이블의 합집합. 중복여부 체크x
(select * from drink)
union all
(select * from drink);
 id |     name     | quantity | shelf_life | volume
----+--------------+----------+------------+--------
  1 | 에너지드링크 |       36 |         30 |    300
  2 | 오렌지주스   |       38 |         25 |   1500
  3 | 무안단물     |       41 |         35 |    600
  4 | 순진맥주     |       47 |         60 |    900
  5 | 더맛         |        3 |         35 |   1000
  1 | 에너지드링크 |       36 |         30 |    300
  2 | 오렌지주스   |       38 |         25 |   1500
  3 | 무안단물     |       41 |         35 |    600
  4 | 순진맥주     |       47 |         60 |    900
  5 | 더맛         |        3 |         35 |   1000
(10 rows)

UNION 명령어는 테이블 결합 이후 중복을 제거하기때문에 이를 주의해야한다.
ex)A테이블에 a행 2개, B테이블에 a행 0개 ㅡ> A UNION B ㅡ> a행 1개(B테이블엔 a행 원래 없음)

'SQL' 카테고리의 다른 글

SQL 테이블 행연결 응용  (0) 2025.02.05
SQL 테이블 행연결(EXCEPT, EXCEPT ALL)  (0) 2025.02.05
SQL 테이블 행연결(INTERSECT, INTERSECT ALL)  (1) 2025.01.31
SQL 5장 실습문제  (1) 2025.01.23
SQL 집계함수  (0) 2025.01.23