MSSQL ORDER BY 절 데이터 정렬 방법(순서 지정) 오름차순, 내림차순

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;
오름차순 ASC 예제 1)

3. 내림차순 DESC 예제

▶ 1, 2번 쿼리 결과는 동일합니다.

-- 1) 과목 내림차순
SELECT *
FROM BS_DEMO_7
ORDER BY SUBJECT DESC;

-- 2) 위치 인덱스로 내림차순
SELECT *
FROM BS_DEMO_7
ORDER BY 3 DESC;
내림차순 DESC 예제 2)

4. 여러 열 항목 정렬

-- 이름(오름차순) → 과목(내림차순)
SELECT *
FROM BS_DEMO_7
ORDER BY NAME ASC, SUBJECT DESC;  -- 위치 인덱스 대신 열 이름 권장
여러 열 항목 정렬 예제 3)

실무 팁

  • 결정적 결과: 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 비용을 줄일 수 있습니다(특히 대량 데이터).

참고 자료

위로 스크롤