정리 작업중

[MySQL] 서브쿼리(SubQuery) 다중행 연산자 ALL, ANY, IN/EXISTS

Xie Yun 2022. 10. 14. 15:22
반응형

MySQL 서브 쿼리 다중행 연산자는 3가지가 있다

 

1. ALL

 - 여러 개의 레코드의 AND효과

 

예제

City 테이블에서 한국 도시의 인구수보다 많은 도시의 이름을 표시하시오. (ALL 사용)

select Name from city where Population >
ALL(select Population from city where CountryCode='KOR');

// 해석
// ALL을 사용했기때문에 아래 쿼리에서 나온 모든 도시들의 인구수보다 커야 만족함.
// ALL(select Population from city where CountryCode='KOR')

 

 

2 ANY

 - 여러 개의 레코드의 OR효과

 

예제

City 테이블에서 한국 도시의 인구 수보다 많은 도시의 이름을 표시하시오. (ANY 사용)

select Name from city where Population >
ANY(select Population from city where CountryCode='KOR');

// 해석
// ANY을 사용했기때문에 아래 쿼리에서 나온 도시들중 단 하나의 도시보다 크다면 만족함.
// ANY(select Population from city where CountryCode='KOR')

 

 

 

3 IN/EXISTS

 - IN은 전체 레코드를 스캔 (상대적으로 느림)

 - EXISTS는 존재여부만 확인 (상대적으로 속도 빠름)

 - 존재하면 TRUE, 존재하지 않으면 FALSE 리턴

 

예제

국가명이 South Korea, China의 국가 코드를 찾아, 이에 해당하는 도시 이름을 표시하시오.

select Name from city where CountryCode
in (select Code from country where Name in('South Korea', 'China'));

 

예제

국가 코드가 'KOR' 이 존재 한다면, 해당 도시는 모두 몇 개인지 표시하시오.

select Count(*) from city where EXISTS (select * from city where CountryCode='KOR');

 

반응형