현재 뽑아올려는 데이터가 테이블 과 컬럼에는 없는데 ,
가상의 테이블을 만들어서 뽑아오고 싶을때
scalar subquery
inline view
중첩 서브쿼리
뽑아오고싶은 데이터를 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 는 우리가 한 테이블을 만든다고 생각하면 된다.
select * from (select CustomerID from Customers where Country= 'Mexico') ci where CustomerID > 13;
이렇게 select CustomerId from Customers where Country = 'Mexico'
쿼리문을 통해 하나의 테이블을 생성한다.
이 결과에서 where CustomerId > 13
을 추가해준것이다.
SELECT *
FROM OrderDetails
WHERE ProductID IN (select ProductId
from Products
where 50 < Price);
만약에 서브쿼리 출력 내용이 1 개 이상이면 IN
을 사용해야하고
서브쿼리 출력 내용이 한개 라면 =
를 사용하면 된다.