RDBS/MYSQL

[MySQL]조건절에 포함되는 데이터 가져오기(WHERE IN, WHERE NOT IN)

MoonSta 2023. 4. 17. 09:37

📌WHERE절 IN, NOT IN

기본적인 WHERE 절의 사용에 익숙하다면 IN, NOT IN을 사용하여 일치하거나, 불일치하는 데이터만 조회할 수 있다.다음 예제를 통해 확인해보도록 하겠습니다.

 

📌예제

SELECT *   -- 학교정보
  FROM school_info;

 

📌조회 결과

mem_id mem_school_name
1 A중학교
2 B중학교
3 C중학교
4 D중학교
5 D중학교
6 A고등학교

 

 

📌예제

select * --학생정보
	from student_info;

 

📌조회 결과

 mem_id mem_name mem_address
1 david 안양
2 may 과천
3 jack 광명
4 jacky 울산
5 kitty 전주
6 bute 광주
7 hide 광주
8 rosa 평촌

 

📌포함되는 데이터 조회하기 - WHERE  IN

SELECT *
   FROM student_info
  WHERE mem_id IN (SELECT mem_id
                      FROM school_info);

 

📌조회 결과

mem_id mem_name mem_address
1 david 안양
2 may 과천
3 jack 광명
4 jacky 울산
5 kitty 전주
6 bute 광주

Explanation:-

 하위 쿼리에서 얻은 결과를 조회조건으로 사용하는 것과 같은 개념입니다.  school_info 테이블에서 mem_id의 값을 우선 조회하고 그 후 가져온 mem_id만 student_info테이블에서 조회합니다.  즉 학교정보를 등록한 학생의 데이터만 조회해오는 결과를 가져옵니다. 

 

 

📌포함되지 않는 데이터 조회하기 - WHERE NOT IN

SELECT *
   FROM student_info
  WHERE mem_id NOT IN (SELECT mem_id
                      FROM school_info);

 

📌조회 결과

mem_id mem_name mem_address
7 hide 광주
8 rosa 평촌

Explanation:-

추가로 WHERE 절에 IN이 아닌 NOT IN을 사용하게 되면 학교정보를 등록하지 않은 학생들이 조회가 된다.