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
반응형