SKN/02. DB

17. 서브쿼리

claovy☘️ 2025. 2. 20. 17:04

1. 서브쿼리 개요

💡 SUBQUERY는 다른 쿼리 내에서 실행되는 쿼리이다. SUBQUERY의 결과를 활용해서 복잡한 MAINQUERY를 작성해 한번에 여러 작업을 수행할 수 있다.

 

2. 서브쿼리 활용

(1) 서브쿼리 활용

# 서브쿼리를 활용한 메인쿼리
SELECT 
    menu_code,
    menu_name,
    menu_price,
    category_code,
    orderable_status
FROM
    tbl_menu
WHERE
    category_code = (SELECT 
            category_code
        FROM
            tbl_menu
        WHERE
            menu_name = '민트미역국');

 

 

(2) 상관 서브쿼리

  • 메인 쿼리가 서브쿼리의 결과에 영향을 주는 경우 상관 서브쿼리라고 한다.
# 서브쿼리를 활용한 메인 쿼리
SELECT 
    menu_code,
    menu_name,
    menu_price,
    category_code,
    orderable_status
FROM
    tbl_menu a
WHERE
    menu_price > (SELECT
            AVG(menu_price)
        FROM
            tbl_menu
        WHERE
            category_code = a.category_code);

 

(3) EXISTS

  • 조회 결과가 있을 때 true 아니면 false
# EXISTS와 SUBQUERY를 활용한 메뉴가 있는 카테고리 조회
SELECT
    category_name
FROM
    tbl_category a
WHERE
    EXISTS(
		SELECT
            1
        FROM
            tbl_menu b
        WHERE
            b.category_code = a.category_code
    )
ORDER BY 1;

 

(4) CTE (Common Table Expressions)

  • 파생 테이블과 비슷한 개념이며 코드의 가독성과 재사용성을 위해 파생 테이블 대신 사용하게 된다.)
WITH menucate AS (
    SELECT
        menu_name,
        category_name
    FROM 
        tbl_menu a
    JOIN 
        tbl_category b on a.category_code = b.category_code
)
SELECT
    *
FROM 
    menucate
ORDER BY 
    menu_name;

'SKN > 02. DB' 카테고리의 다른 글

16. JOIN  (0) 2025.02.20
15. 데이터타입, 내장함수, 연산자  (0) 2025.02.20
14. DML  (0) 2025.02.20
13. SQL 작성 (select / order_by / where / distinct)  (0) 2025.02.19
04. 개념/논리/물리 모델  (1) 2025.02.19