프로그래밍 숲

SQL 비연관 서브쿼리, 연관 서브쿼리의 차이 본문

프로그래밍_인포/데이터베이스&SQL

SQL 비연관 서브쿼리, 연관 서브쿼리의 차이

jjscript 2023. 6. 5. 08:43
728x90
반응형

서브쿼리를 동작하는 방식에 따라 분류하면 다음과 같이 분류할 수 있습니다.

비연관 서브쿼리(Un-Correlated 서브쿼리)

비연관 서브쿼리는 서브쿼리가 메인쿼리 칼럼을 가지고 있지 않은 형태의 서브쿼리를 말합니다. 메인쿼리에 값(서브쿼리가 실행된 결과)을 제공하기 위한 목적으로 주로 사용됩니다.

SELECT name
FROM customers
WHERE age > (
    SELECT AVG(age)
    FROM customers
);

(SELECT AVG(age) FROM customers) 같은 서브쿼리는 독립적으로 실행될 수 있습니다.

연관 서브쿼리(Correlated 서브쿼리)

연관 서브쿼리는 서브쿼리가 메인쿼리 칼럼을 가지고 있는 형태의 서브쿼리를 말합니다. 일반적으로 메인쿼리가 먼저 수행되어 읽힌 데이터를 서브쿼리에서 조건이 맞는지 확인하고자 할 때 주로 사용합니다.

SELECT name
FROM customers c1
WHERE EXISTS (
    SELECT 1
    FROM orders o
    WHERE o.customer_id = c1.id
);

(SELECT 1 FROM orders o WHERE o.customer_id = c1.id) 같은 서브쿼리는 메인쿼리와 연관되어 메인 쿼리에 지정된 고객에 대한 주문이 있는지 확인합니다.

 

메인쿼리의 결과가 서브쿼리로 제공될 수도 있고, 서브쿼리의 결과가 메인쿼리로 제공될 수도 있습니다. 따라서 실행 순서는 상황에 따라 달라진다고 보시면 됩니다.

728x90
반응형
Comments