MSSQL ORDER BY 절 데이터 정렬 방법(순서 지정) 오름차순, 내림차순
SQL Server에서 결과를 원하는 순서로 반환하려면 ORDER BY를 사용합니다. 오름차순은 ASC(기본), 내림차순은 DESC를 지정합니다. 여러 열을 조합하거나, 위치 인덱스를 사용할 수 있지만 가독성과 안전성을 위해 열 이름을 권장합니다. 정렬 컬럼에 인덱스가 있으면 정렬 비용을 줄일 수 있습니다.
- 테스트 환경: Microsoft SQL Server 2019, SSMS 18.10
- 자주 쓰는 곳: 목록 화면 기본 정렬, 다중 정렬, 페이징(
OFFSET … FETCH)
구문
ORDER BY { order_by_expression [ ASC | DESC ] } [ , ... n ]- order_by_expression: 정렬할 열 또는 식.
- ASC/DESC: 오름/내림차순(기본은 ASC, 생략 가능).
사용 예제
1. 테스트 데이터
-- 총 10건
SELECT *
FROM BS_DEMO_7;
2. 오름차순 ASC 예제
▶ 1, 2, 3번 쿼리 결과는 동일합니다.
-- 1) 과목 오름차순
SELECT *
FROM BS_DEMO_7
ORDER BY SUBJECT ASC;
-- 2) ASC 생략 가능
SELECT *
FROM BS_DEMO_7
ORDER BY SUBJECT;
-- 3) 열의 위치 인덱스로 정렬(가독성↓, 권장하지 않음)
SELECT *
FROM BS_DEMO_7
ORDER BY 3;
3. 내림차순 DESC 예제
▶ 1, 2번 쿼리 결과는 동일합니다.
-- 1) 과목 내림차순
SELECT *
FROM BS_DEMO_7
ORDER BY SUBJECT DESC;
-- 2) 위치 인덱스로 내림차순
SELECT *
FROM BS_DEMO_7
ORDER BY 3 DESC;
4. 여러 열 항목 정렬
-- 이름(오름차순) → 과목(내림차순)
SELECT *
FROM BS_DEMO_7
ORDER BY NAME ASC, SUBJECT DESC; -- 위치 인덱스 대신 열 이름 권장
실무 팁
- 결정적 결과:
ORDER BY가 없으면 반환 순서가 보장되지 않습니다. - NULL 정렬: SQL Server는
NULLS FIRST/LAST문법이 없어CASE WHEN으로 제어합니다.ORDER BY CASE WHEN SUBJECT IS NULL THEN 0 ELSE 1 END, SUBJECT; - 대소문자/한글 정렬: 필요한 정렬 규칙이 다르면
COLLATE지정.ORDER BY NAME COLLATE Korean_90_CI_AS; - 페이징:
OFFSET … FETCH는 반드시ORDER BY와 함께 사용.ORDER BY CreatedAt DESC
OFFSET 20 ROWS FETCH NEXT 20 ROWS ONLY; -- 21~40행 - 성능: 정렬 컬럼에 인덱스가 있으면 Sort 비용을 줄일 수 있습니다(특히 대량 데이터).
참고 자료
함께 보면 좋은 게시글
- MSSQL SELECT INTO 테이블 구조 및 데이터 복사하기 (SELECT 절)
- MSSQL DISTINCT 중복 행 제거하는 방법 (SELECT 절)
- MSSQL 논리 연산자 BETWEEN, EXISTS, IN, LIKE, NOT 등 (WHERE 절)
- MSSQL TOP 원하는 행 수(개수) 만큼 지정하는 방법 (SELECT 절)
- MSSQL GROUP BY 절, HAVING 절 사용법
이 글이 도움이 되셨다면 공유 부탁 드립니다.


![[SSMS] 로컬 서버(PC)에 설치한 MSSQL 서버 연결하는 방법](https://bluesharehub.com/wp-content/uploads/2022/02/img_41.png)
