MySQL

9. MySQL 서브쿼리 Sub Query 사용하기

oioioa 2024. 11. 29. 10:29

하나의 SQL문 안에 포함되어 있는 또 다른 SQL문 Sub Query (= 쿼리 내부에 포함되어 있는 SELETE 문)

※ 서브쿼리는 메인쿼리의 컬럼을 사용 가능 / 메인쿼리는 서브쿼리의 컬럼 사용 불가능

 

-- 페이지수가 가장 긴 책의, 제목, 작가이름 페이지수 를 보여주세요(예시)

 

-- 해결책 1 : 정렬해서 해결

SELECT title,author_lname,pages

from books

order by pages desc

limit 1;

 

-- 해결책 2 : pages 의 max 값을 구해서, sub Query 해서 해결 한다.

SELECT *

FROM books;

 

--------------  Sub Query 사용 -------------------

-- 1. 페이지 컬럼의 맥스값을 찾고 -> 634 (예시)

SELECT MAX( pages)

from books;

 

-- 2. pages 컬럼이, 위의 맥스값은 634 인 데이터를 가져오시오 (예시)

SELECT title,author_fname,author_lname,pages

FROM books

WHERE pages = 634;

 

-- 위의 2개의 문장을 한개의 문장으로 만드는거(Sub Query 사용)

1. Sub Query(예시)

SELECT title,author_fname,author_lname,pages

FROM books

WHERE pages =

(SELECT MAX( pages)

from books);

 

2. Sub Query(예시) 

-- 재고 (stock_quantity) 가 가장 적은 책의, 책 이름과 발행년도를 보여주세요.

 

-- 1. 해결책

SELECT title,released_year

FROM books

order by stock_quantity

limit 0,1;

 

-- 2. 해결책(SubQuery)

SELECT min(stock_quantity)

FROM books;

 

SELECT title,released_year

FROM books

WHERE stock_quantity = (SELECT min(stock_quantity)

FROM books);