MySQL, 데이터 조회(subquery)

paikpaik·2023년 7월 15일
0

DB, SQL(MySQL)

목록 보기
6/9
post-thumbnail

subquery

SELECT with subquery 1

  • ID가 14인 임직원보다 생일이 빠른 임직원의 ID, 이름, 생일을 알고 싶다.
  • 쿼리를 2번에 걸쳐서 작성하기 싫고 한번만 작성하고 싶다면 subquery를 사용하자!

SELECT with subquery 2

  • ID가 1인 임직원과 같은 부서 같은 성별인 임직원들의 ID와 이름과 직군을 알고 싶다.

SELECT with subquery 3

  • ID가 5인 임직원과 같은 프로젝트에 참여한 임직원들의 ID를 알고 싶다.
  • 두번의 쿼리를 subquery로 합치기 전에 생각해야할 부분이 OR를 제거해주는 것!
  • IN 정리
  • 테이블 명시 규칙
  • 추가적으로 임직원들의 ID, 이름을 알고 싶다면??!?
  • 가상의 테이블(DSTNCT_E)을 이용해서 FROM절에 subquery를 사용해도 된다!

SELECT with subquery 4

  • ID가 7혹은 12인 임직원이 참여한 프로젝트의 ID와 이름을 알고 싶다.
  • EXISTS 정리
  • EXISTS와 IN은 서로 바꿔쓸 수 있다

SELECT with subquery 5

  • 2000년대생이 없는 부서의 ID와 이름을 알고 싶다.
  • NOT EXISTS 사용
  • NOT IN 사용
  • NOT EXISTS와 NOT IN또한 서로 바꿔쓸 수 있다

SELECT with subquery 6

  • 리더보다 높은 연봉을 받는 부서원을 가진 리더의 ID와 이름과 연봉을 알고 싶다.
  • ANY 정리
  • 각각의 부서의 최고연봉도 궁금하기 때문에 하나의 attribute를 둬서 조회하고 싶다면?

SELECT with subquery 7

  • ID가 13인 임직원과 한번도 같은 프로젝트에 참여하지 못한 임직원들의 ID, 이름, 직군을 알고 싶다.
  • ALL 정리

참고사항

성능 비교 : IN vs EXISTS

  • RDBMS의 종류와 버전에 따라 다르며 최근 버전은 많은 개선이 이루어져서 IN과 EXISTS의 성능 차이가 거의 없는 것으로 알고 있습니다.
출처 : 쉬운코드
profile
매일 앞으로 나아가는 개발자

0개의 댓글