MySQL

My_SQL_ UNION/ UNION ALL/ NOT IN/ IN

ssmm95 2024. 9. 12. 14:58

- UNION : 두 쿼리의 결과를 행으로 합치는 것

형식 :

SELECT 문장1

        UNION [ALL]

SELECT 문장2

 

 

SELECT 문장1과 SELECT 문장2의 결과 열의 개수가 같아야하고, 데이터 형식도 각 열 단위로 같거나 서로 호환되는 데이터 형식이어야 한다. 당연히 문장1의 결과는 INT 인데, 문장2의 결과는 CHAR라면 오류 발생

또한 열 이름은 문장1의 열 이름을 따름

UNION만 사용하면 중복된 열은 제거되고 데이터가 정렬되어 나오며, UNION ALL을 사용하면 중복된 열까지 모두 출력

 

  • 정의: 두 쿼리의 결과를 합치는 것
  • 활용
    • 논리적으로 다른 의미의 결과를 합치는 것은 의미가 없음, 더 나아가 때로는 에러 발생
    • 대용량 테이블을 서로 분리했다가 조회 후 다시 합칠 때 유용
      • ex) 평소에 월별 실적만 보다가 나중에 년도 전체 실적을 보고싶을 때
    • UNION은 중복된 열 제거
    • UNION ALL은 중복된 열까지 모두 출력

 

- NOT IN : 첫 번째 쿼리의 결과 중에서 두 번째 쿼리에 해당하는 것을 제외하기 위한 구문

실습) sqldb 사용자를 모두 조회하되 전화가 없는 사람을 제외하기 

 

SELECT name, concat(mobile1, mobile2) AS '전화번호' 
from usertbl
WHERE name not in (SELECT name from usertbl where mobile1 is null); -- () 안에 표현 된 것이 하위쿼리

 

-IN : NOT IN 과 반대로 첫 번째 쿼리의 결과 중에서 두 번째 쿼리에 해당되는 것만 조회하기 위해서 사용

실습) 전화가 없는 사람만 조회하기

SELECT name, concat(mobile1, mobile2) AS '전화번호' 
from usertbl
WHERE name in (SELECT name from usertbl where mobile1 is null); -- () 안에 표현 된 것이 하위쿼리

 

 

 

'MySQL' 카테고리의 다른 글

MySQL_UNIQUE/CHECK/DEFAULT  (0) 2024.09.12
MySQL_FOREIGN KEY  (0) 2024.09.12
MySQL_CROSS JOIN  (0) 2024.09.12
MySQL_OUTER JOIN  (0) 2024.09.12
MySQL_INNER JOIN  (0) 2024.09.11