[MySql] 쿼리 결과를 합치는 union vs union all의 차이

쿼리문 합치는 방법 (UNION, UNION ALL)


두 개 이상의 SQL 쿼리문을 합치는 방법에 대해 알아보자.


 부득이하게 여러개에 쿼리문을 사용하여 하나에 데이터로 출력해야되는 경우가 존재한다. 이럴 때 사용하는 방법이 바로 UNION 연산자이다.


 예제를 통해 빠르게 이해해보자. 아래는 예제 테이블 2개이다.


 예제 테이블 1

ID

NAME

1

김서방

2

조서방


 예제 테이블 2

ID

NAME

2

조서방

3

박서방


 예제 테이블 각각에 데이터가 들어있다. 예제 테이블들에 데이터를 추출해보자.


 SELECT ID, NAME FROM TABLE1 ;

 SELECT ID, NAME FROM TABLE2 ;


 그러면 위에 예제 테이블 데이터대로 ID와 NAME값을 얻을 수 있다. 그럼 하나의 쿼리로 만들기 위해 UNION ALL을 사용해보자.


 SELECT ID, NAME FROM TABLE1 ;

 UNION ALL

 SELECT ID, NAME FROM TABLE2 ;


 UNION ALL 연산자 결과

ID

NAME

1

김서방

2

조서방

2

조서방

3

박서방


 그러면 위와 같이 출력되는 것을 확인할 수 있다. UNION ALL 연산자는 각각에 쿼리에서 나온 데이터를 하나로 합쳐주는 역할을 하고 있으며, 중복되는 값도 그대로 출력이 된다. 그럼 다른 연산자인 UNION을 사용해보자.


 SELECT ID, NAME FROM TABLE1 ;

 UNION

 SELECT ID, NAME FROM TABLE2 ;


 UNION 연산자 결과

ID

NAME

1

김서방

2

조서방

3

박서방


 그러면 UNION ALL 연산자와 확연히 차이나는 부분이 있을 것이다. 바로 중복되는 부분은 하나에 로우로만 출력이 되는 것이다.


 UNION 연산자와 UNION ALL 연산자는 두 개이상에 SQL 쿼리를 하나로 만들어주지만 차이나는 부분은 중복여부이다. 또한 UNION 연산자를 사용할 시에는 각 쿼리에 컬럼 갯수 및 명칭을 맞춰줘야 되며 그렇지 않으면 오류가 발생하는 것을 볼 수 있다.

출처: https://sesok808.tistory.com/510 [살아가는 그 이유:티스토리]

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
62 [Linux] CentOS postfix 메일서버 설치 및 설정(sendmail 설정) 최고관리자 12-23 1,490
61 [Ubuntu] 인터넷 연결이 안될 때 최고관리자 12-07 1,298
60 [Apache SSL] Ubuntu 인증서(전자서명) 최고관리자 11-24 1,409
59 [Ubuntu] ssl 임시 인증서 준비 및 발급받기 최고관리자 11-23 1,798
58 [Ubuntu] apache2 환경설정 생성기 최고관리자 11-23 3,014
57 [Ubuntu] apache2 설치 최고관리자 11-23 1,314
56 [vi 편집기] 단축키 최고관리자 11-23 1,243
55 [유용한 블로그] ^^.^^ 최고관리자 11-19 1,250
54 [JS] TimelineJS - 시간의 흐름을 네비게이션화 최고관리자 11-19 1,318
53 [JS] 스크롤을 감지하여 사이트의 헤더를 보이거나 숨기기 최고관리자 11-19 1,453
52 [Linux] NAS Mount 최고관리자 11-12 1,267
51 [React] React활용 최고관리자 11-10 1,306
50 [PHP] exec 실행에 대한 응답코드 최고관리자 11-02 1,656
49 [Linux] Shell Script 최고관리자 10-26 1,564
48 [폰트] 폰트 찾기 사이트 최고관리자 10-21 1,367
47 [통신] Socket packet test Program 최고관리자 10-20 1,851
46 [통신] 맥용 Socket Test Program 최고관리자 10-20 1,641
45 [통신] Mac에서 TCP Socket통신 테스트 하기 최고관리자 10-20 2,916
44 [NginX] 504 Gateway Time-out 에러와 해결방법 +1 최고관리자 10-16 24,612
43 [NginX] 설정 최고관리자 10-13 1,582