본문 바로가기
Study/SQL

[MySQL] UNION과 UNION ALL의 차이

by ngool 2024. 9. 4.

본 포스트는 UNIONUNION ALL의 차이에 대해 공부한 내용을 정리한 것입니다.

 

두 테이블을 합친다고 하면 일반적으로 JOIN을 떠올립니다.

물론 JOIN이 굉장히 자주 쓰이는 SQL 명령어는 맞습니다.

 

그렇지만 JOIN 계열은 두 테이블을 가로로 붙이는 것 밖에 못하잖아요?

그럼 두 테이블을 세로로(위아래로) 붙이는 명령어도 있지 않을까요?

그렇습니다!

UNIONUNION ALL이 바로 두 테이블을 세로로(위아래로) 붙이는 역할을 하는 명령어입니다!

 

자 이제 그 차이에 대해 한번 알아보도록 해요~


UNION

  • 기능
    • table1 아래에 table2를 붙여 줌 (단 두 테이블이 가진 컬럼 목록이 같아야 함)
    • 결과 테이블에 중복 행이 있다면 하나만 남기고 중복 제거
  • 용도
    • 중복 행을 제거해야 할 때
    • 두 테이블을 합쳤을 때 중복 행이 존재하는지 알 수 없을 때
  • 예시
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;

 


UNION ALL

  • 기능
    • table1 아래에 table2를 붙여 줌 (단 두 테이블이 가진 컬럼 목록이 같아야 함)
    • 결과 테이블에 중복이 있더라도 그대로 반환
  • 용도
    • 중복 행을 그대로 유지해야 할 때
    • 두 테이블을 합쳤을 때 중복 행이 존재하지 않는다고 확신할 수 있을 때
    • 성능이 중요한 경우 (UNION은 중복을 제거하는 작업을 추가로 수행해야 하므로 UNION ALL이 더 성능이 좋음)
  • 예시
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;

요약

  • UNION: "두 테이블을 위아래로 합치되, 중복은 제거해줘."
  • UNION ALL: "두 테이블을 있는 그대로 위아래로 합쳐줘. 중복이 있어도 괜찮아."

'Study > SQL' 카테고리의 다른 글

[MySQL] SUBSTR 함수에 대하여  (0) 2024.11.05
[MySQL] 세션 변수 (@)  (0) 2024.10.23
[MySQL] CASE문 (CASE WHEN THEN END)  (0) 2024.10.10
[MySQL] IFNULL과 NULLIF의 차이  (0) 2024.09.02