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)을 가져옴
- 회사마다 페이징처리 하는 스타일이 다다르기 때문에 회사에서 사용하는 방식을 보거나 블로그나 강의 참고해서 본인에게 맞는 스타일로 사용하면 됨
- 핵심은 데이터를 건너뛰어서 보여줄 수 있다는 개념만 알고 가면된다.