DB/문법
MySQL Sub Query
ssury94
2024. 11. 29. 10:14
-- 페이지수가 가장 긴 책의 제목, 작가이름, 페이지 수를 보여주세요.
SELECT title, concat(author_lname,' ',author_fname)as fullname, pages
FROM books b
order by pages desc
limit 1;
order by 후 limit 1??
그런데... 페이지수가 같은 책이 여러권이면?
★pages의 max값을 구해서 그 데이터를 불러오기
1) pages의 max값을 구한 다음에

SELECT max(pages)
from books b ;
634페이지가 제일 긴걸 확인해서
2) pages컬럼 맥스값인 634 데이터를 가져오세요.
SELECT *
from books b
where pages=634;
위 두 쿼리를 한번에 쓸 수 있는 서브쿼리!

SELECT title, concat(author_lname,' ',author_fname)as fullname, pages
FROM books b
where pages=(SELECT max(pages) from books b);
Sub query란?
다른 SQL 쿼리 내부에 포함된 SELECT 문을 의미
- 괄호()로 감싸져 표현됩니다.
- 실행 순서는 서브쿼리가 먼저 실행된 후 메인(외부) 쿼리가 실행됩니다.
- 서브쿼리는 메인 쿼리의 컬럼을 사용할 수 있지만, 메인 쿼리는 서브쿼리의 컬럼을 사용할 수 없습니다.
서브쿼리의 위치에 따른 분류:
- SELECT 절: 스칼라 서브쿼리 (하나의 컬럼처럼 사용)
- FROM 절: 인라인 뷰 (하나의 테이블처럼 사용)
- WHERE 절: 일반 서브쿼리 (조건절로 사용)
서브쿼리는 SELECT, INSERT, UPDATE, DELETE, SET, DO 문에서 사용할 수 있으며,
다른 서브쿼리 안에 중첩될 수도 있습니다