상관 서브 쿼리 실행 과정
서브 쿼리의 실행이 외부 쿼리에 의존하는 경우는 대개 서브 쿼리의 테이블이 외부 테이블을 사용하고 조건부 연관을 수행하기 때문이므로 실행될 때마다 둘 다 외부 쿼리 쿼리 및 하위 쿼리를 다시 계산해야 합니다. 이러한 하위 쿼리를 상관 하위 쿼리라고 합니다. 기본 쿼리의 각 행이 실행되면 상관된 하위 쿼리가 행 단위로 실행됩니다.
지침: 하위 쿼리에 기본 쿼리의 열을 사용하세요
제목: 부서의 평균 급여보다 급여가 많은 직원의 성, 급여, 부서 ID를 쿼리하세요
방법 1: 관련 하위 쿼리
FROM
SELECT last_name,salary,e1.department_id FROM employees e1,(SELECT department_id,AVG(salary) dept_avg_sal FROM employees GROUP BY department_id) e2 WHERE e1.`department_id` = e2.department_id AND e2.dept_avg_sal < e1.`salary`;
from 유형 하위 쿼리에서 하위 쿼리 사용: 하위 쿼리는 from의 일부이므로 하위 쿼리는 ()로 인용해야 하며 하위 쿼리에는 다른 이름
을 지정하고 그림 "임시"로 처리해야 합니다. 가상 테이블'을 사용합니다.
제목: 부서명별로 정렬된 직원 ID, 급여 쿼리
ORDER BY에서 하위 쿼리 사용:
SELECT employee_id,salary FROM employees e ORDER BY ( SELECT department_name FROM departments d WHERE e.`department_id` = d.`department_id` );
관련 하위 쿼리는 일반적으로 EXISTS 연산자와 함께 사용됩니다. 하위 쿼리의 조건입니다.
서브 쿼리에 조건을 만족하는 행이 없는 경우:
조건이 FALSE를 반환합니다
서브 쿼리에서 계속 검색하세요
서브 쿼리에서 조건을 만족하는 행이 있는 경우:
계속하지 마세요. 하위 쿼리에서 검색
조건이 TRUE를 반환합니다
NOT EXISTS 키워드는 특정 조건이 존재하지 않으면 TRUE가 반환되고, 그렇지 않으면 FALSE가 반환된다는 의미입니다.
제목: 회사 관리자의 직원 ID, 성, 직업 ID, 부서 ID 정보를 쿼리
SELECT employee_id, last_name, job_id, department_id FROM employees e1 WHERE EXISTS ( SELECT * FROM employees e2 WHERE e2.manager_id = e1.employee_id);
서브 쿼리는 실제로 알 수 없는 테이블을 통해 쿼리한 후 조건부 판단인 반면, Self Join은 알려진 자체 데이터 테이블을 기반으로 합니다
판단에 따라 self-join 처리는 대부분의 DBMS에서 최적화됩니다.
위 내용은 MySQL 하위 쿼리를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!