Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL ORDER BY 절로 특정 값을 기준으로 정렬하는 방법

MySQL ORDER BY 절로 특정 값을 기준으로 정렬하기

MySQL에서 조회 결과를 정렬할 때는 ORDER BY 절을 사용합니다. 일반적인 오름차순·내림차순 정렬뿐만 아니라, 조건식을 함께 활용하면 특정 값을 맨 앞에 표시하고 나머지 데이터를 원하는 순서로 정렬할 수도 있습니다.

이번 글에서는 예제 테이블을 만들고, 특정 학생 ID(70)를 가장 먼저 출력한 뒤 나머지 ID를 오름차순으로 정렬하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 CREATE TABLE 문으로 예제 테이블을 생성합니다.

mysql> create table DemoTable
    (
    StudentId int
    );
Query OK, 0 rows affected (0.59 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(60);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(70);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(45);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(55);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(78);
Query OK, 1 row affected (0.14 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+-----------+
| StudentId |
+-----------+
| 100       |
| 60        |
| 70        |
| 45        |
| 55        |
| 78        |
+-----------+
6 rows in set (0.00 sec)

현재 데이터는 삽입된 순서 그대로 저장되어 있으며, 특별한 규칙 없이 섞여 있는 상태입니다.

4. ORDER BY로 특정 값 우선 정렬하기

다음은 ORDER BY를 사용해 값 70을 가장 먼저 표시하고, 나머지 ID는 오름차순으로 정렬하는 쿼리입니다.

mysql> select *from DemoTable order by StudentId=70 desc,StudentId asc;

출력 결과

+-----------+
| StudentId |
+-----------+
| 70        |
| 45        |
| 55        |
| 60        |
| 78        |
| 100       |
+-----------+
6 rows in set (0.00 sec)

동작 원리 이해하기

이 쿼리가 작동하는 핵심은 StudentId=70이라는 조건식입니다. MySQL에서 비교 연산식은 참일 때 1, 거짓일 때 0을 반환합니다.

  • StudentId=70이 참인 행(70)은 1을 반환하므로, 내림차순(desc) 정렬 시 가장 앞에 위치합니다.
  • 나머지 행은 모두 0을 반환하므로 동일한 그룹으로 묶이고, 두 번째 정렬 기준인 StudentId asc에 따라 오름차순으로 정렬됩니다.

참고: CASE 표현식으로 여러 값 우선순위 지정하기

우선순위를 줄 값이 여러 개라면 CASE 표현식을 사용하는 것이 더 명확합니다.

mysql> select *from DemoTable
    -> order by case StudentId when 70 then 0 when 45 then 1 else 2 end, StudentId asc;

이처럼 ORDER BY 절에 조건식이나 CASE 표현식을 조합하면, 단순한 오름차순·내림차순을 넘어 비즈니스 로직에 맞는 유연한 커스텀 정렬을 손쉽게 구현할 수 있습니다.