SQL/DB Essentials - CH09

서브쿼리

  • SELECT 문 안에 포함되는 SELECT 문

    • SELECT 절
    • FROM 절
    • WHERE 절
    • HAVING 절
    • ORDER BY 절
    • INSERT 문의 VALUES 절
    • UPDATE 문의 SET 절
  • 질의문과 갱신문 둘 다 사용가능

  • 메인쿼리에서 서브쿼리를 참조할 수 없음

  • 단일값, 다중값, 다중행으로 나뉨

  • 비연관, 연관 서브쿼리로 구분 가능

사례 1. 비연관, 단일값

SELECT name 상품명, MSRP '권장 소비자가격'
FROM products
WHERE MSRP >=(

SELECT AVG(MSRP) * 2
FROM products

)
ORDER BY MSRP;

사례 2. 비연관, 다중값

SELECT officeCode, city
FROM offices
WHERE officeCode = ANY (

SELECT officeCode
FROM employees
WHERE lastName = 'Patterson'

)
ORDER BY officeCode;

사례 3. 비연관, 다중행

SELECT productLine 상품라인, name 상품명, MSRP 소비자가격
FROM products
WHERE (productLine, MSRP) IN (

SELECT productLine, MIN(MSRP)
FROM products
GROUP BY productLine

)
ORDER BY productLine, name;

사례 4. 연관, 단일값

SELECT productLine 상품라인, name 상품명, MSRP 소비자가격
FROM products X
WHERE MSRP = (

SELECT MIN(MSRP)
FROM products Y
WHERE Y.productLine = X.productLine

)

ORDER BY productLine, name;

사례 5. 연관, 다중값

SELECT name
FROM customers C
WHERE customerId = ANY (

SELECT customerId
FROM orders O
WHERE O.customerId = C.customerId AND
O.status IN (‘Cancelled', 'On Hold')

);

사례 6. 연관, 다중행

SELECT name
FROM customers C
WHERE EXISTS (

SELECT *
FROM orders O
WHERE O.customerId = C.customerId AND
YEAR(orderDate)=2003 AND MONTH(orderDate)=1

);

좋은 웹페이지 즐겨찾기