SELECT가 열을 고르고 WHERE가 행을 거른다면, ORDER BY는 남은 결과의 순서를 정합니다. 가격이 낮은 상품부터 보여주는 화면을 예로 들어볼게요.
예제 데이터
아래 네 상품을 사용합니다. 오늘의 예제는 PostgreSQL 기준이며, 임시 테이블을 만들지 않아도 실행할 수 있도록 VALUES를 사용했습니다.
| product_id | product_name | price |
| 1 | 노트 | 3000 |
| 2 | 펜 | 1000 |
| 3 | 지우개 | 1000 |
| 4 | 가방 | 20000 |
오늘의 쿼리
WITH products (product_id, product_name, price) AS (
VALUES
(1, '노트', 3000),
(2, '펜', 1000),
(3, '지우개', 1000),
(4, '가방', 20000)
)
SELECT product_id, product_name, price
FROM products
ORDER BY price ASC, product_id ASC;
price ASC는 가격을 작은 값부터 정렬합니다. product_id ASC는 가격이 같은 상품끼리 번호순으로 정렬합니다. 큰 값부터 보고 싶다면 price ASC를 price DESC로 바꿔보세요.
예상 결과
| product_id | product_name | price |
| 2 | 펜 | 1000 |
| 3 | 지우개 | 1000 |
| 1 | 노트 | 3000 |
| 4 | 가방 | 20000 |
실무에서 주의할 점
같은 가격의 행이 여럿이라면 가격만으로는 그 행들의 순서가 고정되지 않습니다. 목록이나 페이지네이션처럼 결과 순서가 중요할 때는 위 예제처럼 고유한 product_id까지 정렬 기준에 넣으세요. 또한 ORDER BY가 없으면 조회 결과의 순서를 보장할 수 없습니다.
내일은 정렬된 결과에서 필요한 개수만 가져오는 방법을 살펴보겠습니다.
반응형
'SQL 기초' 카테고리의 다른 글
| 오늘의 쿼리 06 | DISTINCT로 중복 값 없이 조회하기 (0) | 2026.10.29 |
|---|---|
| 오늘의 쿼리 05 | OFFSET으로 앞의 행 건너뛰기 (0) | 2026.10.28 |
| 오늘의 쿼리 04 | LIMIT으로 결과 개수 제한하기 (0) | 2026.10.27 |
| 오늘의 쿼리 02 | WHERE로 원하는 행만 골라보기 (0) | 2026.10.25 |
| 오늘의 쿼리 01 | SELECT로 원하는 데이터 조회하기 (0) | 2026.10.24 |