서브쿼리

BackEnd_Ash.log·2022년 2월 12일
0

database

목록 보기
18/31

✅ 서브 쿼리

📌 이거 왜써?

현재 뽑아올려는 데이터가 테이블 과 컬럼에는 없는데 ,
가상의 테이블을 만들어서 뽑아오고 싶을때

📌 종류는 ?

  1. select 절에 사용하는 scalar subquery
    • 한개의 로우만 반환한다.
    • 일치하는 값이 없을 경우 NULL 값 return
    • 불 필요한 조인을 하지 않기 위해서 많이 사용한다.
  2. from 절에 사용하는 inline view
  3. where 절에 사용하는 중첩 서브쿼리

📌 어떻게 쓰는데 ?

scalar subquery

뽑아오고싶은 데이터를 select 로 뽑으면 된다.

select *, (select o.OrderID from Orders o where o.CustomerID = c.CustomerID) orderId
from Customers c where c.CustomerID in (2,3);

이렇게 사용하면 된다.

inline view

inline view 는 우리가 한 테이블을 만든다고 생각하면 된다.

select * from (select CustomerID from Customers where Country= 'Mexico') ci where CustomerID > 13;

이렇게 select CustomerId from Customers where Country = 'Mexico' 쿼리문을 통해 하나의 테이블을 생성한다.

이 결과에서 where CustomerId > 13 을 추가해준것이다.

where 절 중첩 서브쿼리

SELECT * 
	FROM OrderDetails 
WHERE ProductID IN (select ProductId 
						from Products 
                    where 50 < Price);

만약에 서브쿼리 출력 내용이 1 개 이상이면 IN 을 사용해야하고

서브쿼리 출력 내용이 한개 라면 = 를 사용하면 된다.

profile
꾸준함이란 ... ?

0개의 댓글