EXISTS 연산자는 하위 쿼리의 결과 집합에 행이 있는지 테스트합니다. 하위 쿼리 행 값이 발견 되면 EXISTS 하위 쿼리는 TRUE이며 이 경우 EXISTS 하위 쿼리는 FALSE입니다. SQL 표준에 필요한 모든 하위 쿼리 양식 및 작업은 물론 MySQL에 특정한 몇 가지 기능이 지원됩니다. 필요한 경우 다른 하위 쿼리 내에 하위 쿼리를 중첩할 수 있습니다. 하위 쿼리를 사용하여 emp_details에서 `알렉산더`보다 많은 돈을 지불한 직원의 이름을 나열합니다. 비교 연산자 다음에 ALL, ANY 또는 SOME이라는 키워드다음에 하위 쿼리를 사용할 수 있습니다. 하위 쿼리는 검색할 데이터를 추가로 제한하는 조건으로 주 쿼리에서 사용되는 데이터를 반환하는 데 사용됩니다. MySQL에서는 테이블을 수정하고 하위 쿼리에서 동일한 테이블에서 선택할 수 없습니다. 이는 DELETE, INSERT, REPLACE, UPDATE 및(SET 절에서 하위 쿼리를 사용할 수 있기 때문에) LOAD 데이터와 같은 문에 적용됩니다. 하위 쿼리가 FROM 절에서 시작되면(WHERE 절이 아닌) 결과 집합을 파생 테이블(구체화된 하위 쿼리라고도 함)이라고 합니다. MySQL에서 하위 쿼리가 어떻게 작동하는지 이해해 보겠습니다. 참고: 쿼리에서 선택한 부서의 평균 급여가 다른 부서의 모든 평균 급여보다 크거나 같아야 하기 때문에 이 하위 쿼리에 대한 모든 키워드를 사용했습니다. 외부 쿼리는 ProductID에 대한 값을 하위 쿼리에 전달합니다.

하위 쿼리의 WHERE 절에서 발생합니다 [a.ProductID = b.ProductID] 다음 하위 쿼리는 판매 주문에서 항목의 최대, 최소 및 평균 수를 찾습니다. 데이터베이스 엔진은 상호 관련된 하위 쿼리를 평가하는 데 걸립니다. 하위 쿼리는 외부 쿼리의 데이터를 사용하고 하위 쿼리는 외부 쿼리의 모든 행에 대해 한 번 실행됩니다. 하위 쿼리를 “내부 쿼리” 또는 “내부 선택”이라고도 합니다. 하위 쿼리를 포함하는 문을 “외부 쿼리” 또는 “외부 선택”이라고도 할 수 있습니다. 위의 예제에서는 먼저 새 테이블을 만듭니다(데이터를 삽입할 수 있음). INSERT 문 내부의 하위 쿼리(및 중첩된 하위 쿼리)를 사용하여 필요한 데이터를 검색한 다음 새 테이블에 삽입합니다. 마지막으로 새 테이블에서 모든 레코드를 선택하여 올바른 데이터가 삽입되었는지 확인합니다. 하위 쿼리가 두 개 이상의 값을 반환하는 경우 WHERE 절에서 IN 또는 NOT IN 연산자와 같은 다른 연산자를 사용할 수 있습니다. 하위 쿼리는 다른 문 내의 SELECT 문입니다.

위의 예제에서는 중첩된 하위 쿼리를 사용하여 제목이 Ace Goldfinger와 같은 필름 테이블에서 film_id를 검색합니다. 이는 이전 예제와 동일한 필름(film_id는 2)이므로 이전 예제와 동일한 액터 목록을 얻습니다. MySQL 하위 쿼리는 SELECT, INSERT, UPDATE 또는 DELETE와 같은 다른 쿼리 내에 중첩된 쿼리입니다. 또한 MySQL 하위 쿼리는 다른 하위 쿼리 내에 중첩될 수 있습니다. SUB쿼리는 INSERT 문과 함께 사용할 수도 있습니다. INSERT 문은 하위 쿼리에서 반환된 데이터를 사용하여 다른 테이블에 삽입합니다. 하위 쿼리에서 선택한 데이터는 문자, 날짜 또는 숫자 함수로 수정할 수 있습니다. 하위 쿼리는 위에서 언급한 다른 문과 마찬가지로 DELETE 문과 함께 사용할 수 있습니다. 위의 예에서는 film_actor 테이블에 필름 제목이 포함되어 있지 않으므로 film_id를 사용해야 했습니다. 우리가 조회해야 하는 모든 영화에 대한 영화 ID를 기억하지 않고 영화 제목을 사용할 수 있다면 더 좋을 것입니다. 중첩된 하위 쿼리가 유용할 수 있는 위치입니다.