본문 바로가기

TOOLS/My SQL

[My SQL] LIMIT과 OFFSET / 원하는 행만 출력하기

728x90
728x90

오늘 포스팅하는 LIMIT과 OFFSET 구문은 쿼리문의 맨마지막에 작성한다.
SELECT ~ ORDER BY 절 까지 상단의 쿼리문들을 수행 후 원하는 행만 ✂️ 컷 ✂️ 해주는 기능이다.
 
쿼리문 작성 순서와 데이터 처리 순서는
SQLD 시험에서도 단골 문제로 등장하는 내용이므로 리마인드!
⇩⇩⇩
 

📍 쿼리문 작성 순서

SELECT - FROM - WHRER - GROUP BY - HAVING - ORDER BY - LIMIT

 

📍 데이터 처리 순서

FROM - WHERE - GROUP  BY - HAVING - SELECT - ORDER BY - LIMIT

 

 
그럼 지금부터 LIMIT과 OFFSET의 의미와 예시를 살펴보겠다.


|  LIMIT 

N행까지만 출력하기

LIMIT {N행} 

 

예시 1)

LIMIT  4 ;

: 4행까지만 출력      

SELECT ROW_NUMBER() OVER(ORDER BY total_price DESC)
       AS 'No.', 
       id, 
       FORMAT(total_price,0) AS revenue
FROM (
      SELECT id,
 SUM(Price) AS total_price
  FROM fastcampus.tbl_purchase
      WHERE purchased_at >= '2020-07-01'
      AND purchased_at < '2020-08-01'
      GROUP BY 1
      ORDER BY 2
      ) AS R 
LIMIT 4;

4행까지 출력된 것을 확인할 수 있다.

 

 

예시 2)

LIMIT  4 ,   10 ;

: 5행을 시작으로 10행 출력      

SELECT ROW_NUMBER() OVER(ORDER BY total_price DESC)
       AS 'No.', 
       id, 
       FORMAT(total_price,0) AS revenue
FROM (
      SELECT id,
 SUM(Price) AS total_price
  FROM fastcampus.tbl_purchase
      WHERE purchased_at >= '2020-07-01'
      AND purchased_at < '2020-08-01'
      GROUP BY 1
      ORDER BY 2
      ) AS R 
LIMIT 4, 10;

5행부터 시작해서 10개의 행이 출력된 것을 확인할 수 있다.

 

|  OFFSET

N행부터 출력하기

LIMIT {N행} OFFSET {N행}  

 

예시 1)

LIMIT  10  OFFSET  4 ;

: 5행을 시작으로 10행 출력      

SELECT ROW_NUMBER() OVER(ORDER BY total_price DESC)
       AS 'No.', 
       id, 
       FORMAT(total_price,0) AS revenue
FROM (
      SELECT id,
			 SUM(Price) AS total_price
	  FROM fastcampus.tbl_purchase
      WHERE purchased_at >= '2020-07-01'
      AND purchased_at < '2020-08-01'
      GROUP BY 1
      ORDER BY 2
      ) AS R 
LIMIT 10 OFFSET 4;

5행부터 시작해서 10개의 행이 출력된 것을 확인할 수 있다.

 


!!!
결론적으로 OFFSET을 사용하지 않고 LIMIT 함수 만을 통해 첫행과 출력행 수를 조정할 수 있다. 😇

LIMIT  4 ,   10 ;   =  LIMIT  10  OFFSET  4 ; 

728x90
728x90