하나의 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);

'MySQL' 카테고리의 다른 글
13. MySQL case, if 사용하기 (0) | 2024.11.29 |
---|---|
11. MySQL null인 데이터를 가져오기, 바꾸기 is null,ifnull (0) | 2024.11.29 |
8. MySQL 데이터 집계함수 count, sum, avg, max, min (0) | 2024.11.28 |
7. MySQL 데이터를 가공하는 키워드 distinct, order by, limit, like, group by (0) | 2024.11.28 |
6. MySQL 문자열 함수 (1) | 2024.11.27 |