SQL 정리 : Union, Intersect, Except

Notura·2024년 9월 22일
post-thumbnail

Union

(
  SELECT *
  FROM products
  ORDER BY price DESC
  LIMIT 4;
)
UNION
(
  SELECT *
  FROM priducts
  ORDER BY price / wright DESC
  LIMIT 4;
);

두 개의 쿼리를 괄호로 묶고 UNION 키워드로 합친다. 각 쿼리의 결과가 하나로 합쳐지고 중복은 허용되지 않는다(마치 Set)

Union all

(
  SELECT *
  FROM products
  ORDER BY price DESC
  LIMIT 4;
)
UNION ALL
(
  SELECT *
  FROM priducts
  ORDER BY price / wright DESC
  LIMIT 4;
);

두 가지 쿼리의 결과를 합치는데 union과 다른 점은 중복을 허용한다.

중요한 Union 조건

☝합치는 두 결과 테이블의 컬럼들의 이름과 데이터타입이 같아야한다.

Intersect

(
  SELECT *
  FROM products
  ORDER BY price DESC
  LIMIT 4;
)
INTERSECT
(
  SELECT *
  FROM priducts
  ORDER BY price / wright DESC
  LIMIT 4;
);

두 쿼리의 결과를 비교하고 같은 값을 가지는 열을 가져온다. 그때 중복 없이 어떤 열이 중복되는지 1번만 보여준다.

Intersect All

(
  SELECT *
  FROM products
  ORDER BY price DESC
  LIMIT 4;
)
INTERSECT ALL
(
  SELECT *
  FROM priducts
  ORDER BY price / wright DESC
  LIMIT 4;
);

두 쿼리의 결과를 비교하고 중복인 열을 보여주는데, 중복인 모든 열을 보여준다. 같은 값의 열이 3번 중복되어도 3개의 열 모두 보여준다.

Except

(
  SELECT *
  FROM products
  ORDER BY price DESC
  LIMIT 4;
)
EXCEPT
(
  SELECT *
  FROM priducts
  ORDER BY price / wright DESC
  LIMIT 4;
);

위의 쿼리의 결과를 가지고 아래 쿼리와 비교해서 중복되는 열을 제거하고 나머지 결과 테이블을 보여준다. 아래 쿼리는 비교만 하고 결과 테이블에 영향을 주지 않는다

profile
고통을 즐기자

0개의 댓글