SQL

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

봄다온 2025. 1. 31. 20:37

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

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

INTERSECT, INTERSECT ALL

# INTERSECT
두 테이블의 교집합. 서로 중복되는 행은 1개로 출력
 (
  (select * from drink)
  union all
  (select * from drink)
)
intersect
(
  (select * from drink)
  union all
  (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)

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

'SQL' 카테고리의 다른 글

SQL 테이블 행연결(EXCEPT, EXCEPT ALL)  (0) 2025.02.05
SQL 테이블 행연결(UNION, UNION ALL)  (0) 2025.02.05
SQL 5장 실습문제  (1) 2025.01.23
SQL 집계함수  (0) 2025.01.23
SQL 명령어 우선순위  (0) 2025.01.23