Mysql&DBeaver

DBeaver)SELECT 결과들을 합치려면 UNION

연습노트 2024. 9. 8. 16:26

오늘은 UNION 문법을 매우 짧고 쉽게 알아봅시다. 

코드 열심히 짜다보면 SELECT 여러개를 사용해야하는 경우가 있습니다. 

SELECT문을 여러개 쓰면 결과를 각각 다른 탭에 보여줄텐데 이게 싫으면 하나의 결과로 합쳐놓을 수 있습니다.

UNION 문법 쓰면 됩니다. 

 

 

 

 

UNION 사용법 

 

 

▲ 저번시간의 insert_test 데이터베이스에 비슷한 테이블 2개를 만들어놨습니다. 

이 2개의 테이블을 전부 출력하고 싶으면 어떻게 코드짭니까

 

SELECT * FROM insert_test.stock;
SELECT * FROM insert_test.stock2;

각각 출력해보면 되지 않겠습니까 

근데 이러면 결과를 다른 탭으로 출력해줍니다. 

 

 

이게 싫고 결과를 하나로 합치고 싶으면 UNION 문법을 씁시다. 

 

 

 

SELECT * FROM insert_test.stock
UNION
SELECT * FROM insert_test.stock2;

이러면 하나의 테이블로 합쳐서 출력해줍니다. 

 

 

 

 

SELECT * FROM insert_test.stock WHERE id = 1
UNION
SELECT * FROM insert_test.stock WHERE id = 2

같은 테이블 출력결과도 UNION 쓰면 하나로 합쳐줄 수 있습니다. 

 

Q. 방금건 WHERE 조건식 잘 작성해도 똑같이 구현가능한거같은데요 

A. 들킴

다른 테이블을 SELECT한 결과를 합치고 싶을 때 주로 UNION 연산자가 쓸모있습니다. 

 

 

 

 

 

 

컬럼 갯수가 다르거나 컬럼 이름이 다른 경우 

 

 

SELECT id, 상품명 FROM insert_test.stock 
UNION
SELECT id, 상품명, 가격 FROM insert_test.stock2; 

UNION으로 합치려는 테이블의 컬럼 갯수가 다르면 에러납니다. 

상식적으로 2열짜리 테이블이랑 3열짜리 테이블을 어떻게 합침

 

 

 

SELECT id, 가격 FROM insert_test.stock 
UNION
SELECT 상품명, 가격 FROM insert_test.stock2; 

컬럼 갯수만 맞아도 출력가능하긴 한데 

서로 동일한 데이터타입을 가진 컬럼을 출력하는게 좋은 습관입니다. 

위처럼 출력해서 어따씀 

 

 

 

 

 

UNION ALL 사용법

 

UNION으로 합친 결과들은 자동으로 중복을 제거해줍니다. 

중복제거가 싫고 중복된 행도 냅두고 싶으면 UNION ALL을 사용하면 됩니다. 

진짜인지는 동일한 자료를 가진 행을 각 테이블에 만들어놓고 UNION, UNION ALL 써봅시다. 

 

 

 

 

 

 

 

Q. JOIN이랑 다른게 뭐임?

- JOIN은 테이블을 양옆으로 붙이고 싶을 때 씁니다.

- UNION은 테이블을 위아래로 붙이고 싶을 때 씁니다.