[MySQL] SQL 문법 정리 (9) : Subquery (서브쿼리)

2024. 1. 29. 01:49
반응형



 

 

 

사용 데이터

 

 



Subquery (서브쿼리)

 

SQL문 안에서 또 다른 SQL문을 사용하는 방법을 의미한다.

  • 외부 쿼리의 결과에 따라 조건을 동적으로 결정할 수 있다.
  • 서브쿼리를 통해 계산된 값을 사용하여 외부 쿼리를 수행할 수 있다.
  • 서브쿼리를 사용하여 특정 그룹에 대한 집계 함수를 계산하고 결과를 외부 쿼리에 사용할 수 있다.

 

 

 


 

단일 행을 반환하는 서브쿼리

 

서브쿼리가 한 개의 행을 반환하는 경우 일반적으로 비교 연산자와 함께 사용되어 외부 쿼리와 비교하거나 해당 행을 그대로 사용하기도 한다.

 

 

 

Select 절에서 서브쿼리 사용

 

책 이름과 판매량을 구하시오

select bookname, 
(select count(*) from orders where bookid = B.bookid) as salesCount
from book B;

 

 

 

From 절에서 서브쿼리 사용

 

출판사별로 출판사의 평균 도서 가격보다 비싼 도서 이름을 구하시오

select B.bookname
from book B, (select avg(price) as aver, publisher from book group by publisher) as A
where B.price > A.aver and B.publisher = A.publisher;

 

 

 

 

 

Where 절에서 서브쿼리 사용

 

출판사별로 출판사의 평균 도서 가격보다 비싼 도서를 구하시오

select * from book b
where price > (select avg(price) from book where publisher = b.publisher);

 

 

 

 


여러 행을 반환하는 서브쿼리

 

서브쿼리가 여러 개의 행을 반환하는 경우 행 비교 연산자를 사용하여 원래 쿼리의 결과와 비교하게 된다.

키워드로는 SOME, ANY, ALL, IN, NOT IN 등이 있다.

 

 

 

가장 비싼 도서의 이름은 무엇인가? (ALL)

select bookname from book
where price >= all(select price from book);

 

# (MAX / MIN) 을 사용해서도 같은 동작 가능
select bookname from book
where price = (select max(price) from book);

 

 

 

 

 

주문이 있는 고객의 이름과 주소를 보이시오. (IN)

 

select * from customer
where custid in (select custid from orders);

 

 

 

 


서브쿼리 개념

 

Correlated Subquery (상관 서브쿼리)

  • 외부 쿼리와 내부 서브쿼리 간에 연관성이 있는 경우를 Corelated Subquery라고 부른다.
  • 내부 서브쿼리에서 외부 쿼리의 컬럼을 참조하기 때문에 각 행에 대한 서브쿼리의 결과가 동적으로 변경될 수 있다.
  • 주로 SELECT, WHERE 절에서 사용된다.

 

 

Derived Relation (파생 관계)

  • 서브쿼리의 결과를 임시 테이블로 취급하여 사용하는 것을 나타낸다.
  • 주로 FROM 절에서 사용된다.

 

# Correlated Subquery
select b.bookname from book b
where price > (select avg(price) from book where publisher = b.publisher);

# Derived relation
select B.bookname
from book B, (select avg(price) as aver, publisher from book group by publisher) as A
where B.price > A.aver and B.publisher = A.publisher;

 

 

 

 

 

 

반응형

BELATED ARTICLES

more