DataBase

[DATABASE] ORDER BY / LIMIT / OFFSET

개발메모장 2025. 5. 11. 20:47

ORDER BY

  • 조회 결과를 정렬할 때 사용
  • 기본적으로 오름차순(ASC), 내림차순(DESC)를 지원
  • 복수(다중)정렬도 가능하고 사용시 먼저 작성한 컬럼 순서대로 정렬된다.

문법

-- 단일 정렬
SELECT 컬럼명
FROM 테이블
ORDER BY 컬럼명 ASC

-- 복수(다중)정렬
SELECT 컬럼명
FROM 테이블
ORDER BY 컬럼명 DESC, 컬럼명 ASC, 컬럼명 ...

예시)

학생들을 나이가 많은 순으로 정렬하고 싶다.

  • 예상 순서 13 > 12 > 11 > 9 > 8

결과

쿼리문

SELECT 
   *
FROM STUDENT
ORDER BY STUDENT_AGE DESC;

 

복수(다중) 정렬 예시)

학생들을 나이 많은 순인데 이름은 ㄱㄴㄷ 순으로 보고싶다.

  • 김대호와 박만기를 추가해서 9살인 인원이 3명으로 늘었다.
  • 그럼 여기서 예상되는 데이터는 김대호 > 박만기 > 이금순 으로 나와야 한다.

결과

쿼리문

SELECT 
   *
FROM STUDENT
ORDER BY STUDENT_AGE DESC, STUDENT_NAME ASC;

LIMIT

  • 결과에서 맨 앞부터 N개만 잘라서 보여줄지 지정
  • 주로 페이징처리 할 때 사용
  • RDBMS 종류에 따라 지원되는게 있고 안되는게 있다.
  • Oracle, SQL Server  미지원

문법

SELECT * FROM 테이블
LIMIT 10; -- 최초 10개 행만 반환

 

  • 회사마다 페이징처리 하는 스타일이 다다르기 때문에 회사에서 사용하는 방식을 보거나 블로그나 강의 참고해서 본인에게 맞는 스타일로 사용하면 됨
  • 핵심은 데이터를 잘라서 보여줄 수 있다는 개념만 알고 가면된다.

OFFSET

  • 결과에서 앞에서 몇 개 건너뛸지 지정
  • 주로 페이징처리 할 때 사용
  • RDBMS 종류에 따라 지원되는게 있고 안되는게 있다.
  • Oracle(미지원), SQL Server (조건부 지원)

문법

SELECT * FROM 테이블
LIMIT 10 OFFSET 20; -- 21번째 행부터(OFFSET) 10개 행(LIMIT)을 가져옴
  • 회사마다 페이징처리 하는 스타일이 다다르기 때문에 회사에서 사용하는 방식을 보거나 블로그나 강의 참고해서 본인에게 맞는 스타일로 사용하면 됨
  • 핵심은 데이터를 건너뛰어서 보여줄 수 있다는 개념만 알고 가면된다.