MySQL/문법

ORDER BY

Freely_ 2025. 2. 4. 19:00
728x90
반응형
728x90

ORDER BY

특정 컬럼 값을 기준으로 정렬할 때 사용

 

기본적으로 오름차순(ASC) 정렬 → 생략 가능

내림차순(DESC) 정렬도 가능

 

오름차순 정렬 (ASC)

SELECT *
FROM CUSTOMERS
ORDER BY NAME
-- NAME 컬럼 기준으로 알파벳순 (A - Z) 또는 가나다순 정렬

 

내림차순 정렬 (DESC)

SELECT *
FROM CUSTOMERS
ORDER BY ORDER_DATE DESC
-- ORDER_DATE 컬럼 기준으로 가장 최근 주문부터 정렬

 

여러 컬럼 정렬

SELECT *
FROM EMPLOYEES
ORDER BY DEPARTMENT, SALARY DESC
-- DEPARTMENT(부서) 기준 오름차순 정렬 후, 같은 부서 내에서 SALARY(급여) 내림차순 정렬

 

컬럼 이름 대신 숫자로도 가능

SELECT NAME, AGE, SALARY
FROM EMPLOYEES
ORDER BY 2 DESC, 3
-- 2(AGE) 기준 내림차순, 같은 나이의 경우 3(SALARY) 기준 오름차순

 

NULL 값이 있는 경우

ASC 일 때 NULL 값이 먼저 나옴

DESC 일 때 NULL 값이 마지막에 나옴

SELECT *
FROM PRODUCTS
ORDER BY PRICE DESC
-- 높은 가격부터 정렬하되 PRICE가 NULL이면 마지막에 정렬

 

NULL을 무조건 마지막에 두고 싶다면

SELECT *
FROM PRODUCTS
ORDER BY PRICE IS NULL, PRICE DESC
-- PRICE IS NULL을 먼저 적용하면 NULL 값이 가장 뒤로 정렬

 

NULL을 가장 위로 정렬하고 싶다면

SELECT *
FROM PRODUCTS
ORDER BY PRICE IS NOT NULL, PRICE DESC

 

ORDER BY PRICE IS NULL의 동작 방식

NULL이면 TRUE(1), 아니면 FALSE(0)

즉, NULL이면 1, 아니면 0이 되어 먼저 정렬

ORDER BY는 기본적으로 오름차순이므로 0이 먼저 정렬되기 때문에 NULL이 아닌 값이 먼저 나오게 됨

728x90
반응형