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 bylimit 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 문을 의미

  1. 괄호()로 감싸져 표현됩니다.
  2. 실행 순서는 서브쿼리가 먼저 실행된 후 메인(외부) 쿼리가 실행됩니다.
  3. 서브쿼리는 메인 쿼리의 컬럼을 사용할 수 있지만, 메인 쿼리는 서브쿼리의 컬럼을 사용할 수 없습니다.

 

서브쿼리의 위치에 따른 분류:

  1. SELECT 절: 스칼라 서브쿼리 (하나의 컬럼처럼 사용)
  2. FROM 절: 인라인 뷰 (하나의 테이블처럼 사용)
  3. WHERE 절: 일반 서브쿼리 (조건절로 사용)

서브쿼리는 SELECT, INSERT, UPDATE, DELETE, SET, DO 문에서 사용할 수 있으며,

다른 서브쿼리 안에 중첩될 수도 있습니다