Articles

SQL 상관된 하위

요약:이 튜토리얼에서,당신은 당신에 대해 배우게 될 것입 SQL 상관된 하위는 하위 사용하는 값에서 쿼리가 있습니다.

Sql 상관 하위 쿼리 소개

예제부터 시작하겠습니다.

다음과 같은employees테이블에서 샘플 데이터베이스

SQL 상관된 하위: 직원 Table

다음과 같은 쿼리를 찾는 직원들이 급여가 평균 이상봉은 모든 직원

SELECT employee_id, first_name, last_name, salaryFROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);
SQL 하위 예

이 예제에서 하위 사용에WHEREclause. 거기에 몇 가지 포인트는 당신이 볼 수 있에서 쿼리를

첫 번째 실행할 수 있습니다리를 반환한 평균 급여의 모든 직원들이 독립적으로.

SELECT AVG(salary)FROM employees;

둘째,데이터베이스 시스템은 하위 쿼리를 한 번만 평가해야합니다.

셋째,외부 쿼리는 하위 쿼리에서 반환 된 결과를 사용합니다. 외부 쿼리는 해당 값에 대한 하위 쿼리에 따라 다릅니다. 그러나 하위 쿼리는 외부 쿼리에 의존하지 않습니다. 때로는이 하위 쿼리를 일반 하위 쿼리라고 부릅니다.

일반 하위 쿼리와 달리 상관 된 하위 쿼리는 외부 쿼리의 값을 사용하는 하위 쿼리입니다. 또한 상관 된 하위 쿼리는 외부 쿼리에 의해 선택된 각 행에 대해 한 번 평가 될 수 있습니다. 이 때문에 상관된 하위 쿼리를 사용하는 쿼리가 느려질 수 있습니다.

상관 된 하위 쿼리는 반복 하위 쿼리 또는 동기화 된 하위 쿼리라고도합니다.

SQL 상관 하위 쿼리 예제

더 잘 이해하기 위해 상관 하위 쿼리의 예제를 몇 가지 더 살펴 보겠습니다.

SQL 상관된 하위 WHERE 절에서 예

다음과 같은 쿼리를 찾는 모든 직원들이 급여 보다 더 높은 평균 급여의 직원들의 부서:

SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)ORDER BY department_id , first_name , last_name;

여기에 출력:

SQL 상관된 하위 예

이 예제에서,외부 쿼리입니다:

SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary >...

와 상관된 하위:

SELECT AVG( list_price )FROM productsWHERE category_id = p.category_id

각 직원에 대한 데이터베이스 시스템의 실행에 상관된 하위를 한 번 계산의 평균 급여 직원의 부서에서는 현재 employee.

SQL 상관된 하위 SELECT 절에서 예

다음과 같은 쿼리를 반환한 직원과의 평균 급여 모든 직원들은 부서:

SELECT employee_id, first_name, last_name, department_name, salary, (SELECT ROUND(AVG(salary),0) FROM employees WHERE department_id = e.department_id) avg_salary_in_departmentFROM employees e INNER JOIN departments d ON d.department_id = e.department_idORDER BY department_name, first_name, last_name;

출력 결과는 다음과 같습니다.

SQL 상관된 하위에서 선택 절

각 직원에 대한 데이터베이스 시스템의 실행에 상관된 하위를 한 번 계산 평균 급여에 의해 직원의 부가 있습니다.

SQL 상관 하위 쿼리와 exists 연산자 예제

우리는 종종EXISTS연산자와 상관 하위 쿼리를 사용합니다. 예를 들어,다음과 같은 쿼리를 반환하는 모든 직원이 없는 가족:

SELECT employee_id, first_name, last_nameFROM employees eWHERE NOT EXISTS( SELECT * FROM dependents d WHERE d.employee_id = e.employee_id)ORDER BY first_name , last_name;

다음과 같은 그림이 보여 출력:

SQL 상관된 하위와 존재하는 운영자

이 튜토리얼에서 당신이 배운 것에 대한 SQL 상관된 하위와 방법을 적용하는 형태로 복잡한 쿼리가 있습니다.이 튜토리얼이 도움이 되었습니까?

  • YesNo