SELECT
CategoryID, CategoryName, Description,
(SELECT ProductName FROM Products WHERE ProductID = 1) # 추가 괄호
FROM Categories;
SELECT * FROM Products
WHERE Price < (SELECT AVG(Price) # Price가 평균보다 작을 경우만 조회
FROM Products
SELECT
CategoryID, CategoryName, Description
FROM Categories
WHERE
CategoryID =
(SELECT CategoryID FROM Products
WHERE ProductName = 'Chais');
# CategoryID가 'Chais' 값을 가지는 CategoryID를 조건으로 함
ALL: 서브쿼리의 모든 결과에 대해 ~하다.
ANY: 서브쿼리의 하나 이상의 결과에 대해 ~하다
SELECT * FROM Products
WHERE Price > ALL (
SELECT Price FROM Products
WHERE CategoryID = 2
);
# CategoryID가 2이며, 조회한 Price의 모든 값보다 더 큰 값을 조회한다.
# CategoryID=2 이고, MAX(Price)인 값
SELECT
CategoryID, CategoryName, Description
FROM Categories
WHERE
CategoryID = ANY
(SELECT CategoryID FROM Products
WHERE Price > 50);
# price가 50미만인 값과 동일한 값이 있을 경우 출력
SELECT
ProductID, ProductName,
(
SELECT CategoryName FROM Categories C
WHERE C.CategoryID = P.CategoryID
) AS CategoryName
# P.CategoryID와 C.CategoryID가 같은 경우 CategoryName을 출력
FROM Products P;
SELECT
CategoryID, CategoryName,
(
SELECT MAX(Price) FROM Products P
WHERE P.CategoryID = C.CategoryID
) AS MaximumPrice,
# CategoryID가 같은(같은 종류의) 물건중 가장 가격이 비싼것
(
SELECT AVG(Price) FROM Products P
WHERE P.CategoryID = C.CategoryID
) AS AveragePrice
# CategoryID가 같은(같은 종류의) 물건으로 평균 가격을 구한다
FROM Categories C;
SELECT
CategoryID, CategoryName
,(SELECT MAX(P.Price) FROM Products P
WHERE P.CategoryID = C.CategoryID
) AS MaxPrice
# CategoryID가 서로 같은 data중 Products에서 가장 큰 가격
FROM Categories C
WHERE EXISTS (
SELECT * FROM Products P
WHERE P.CategoryID = C.CategoryID
AND P.Price > 80
);
# CategoryID가 같은 data중 80이 넘어가는 data가 존재 하는지