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

MySQL ORDER BY로 특정 값을 맨 앞에 정렬하는 방법

개요

MySQL에서 ORDER BY 절을 사용할 때, 단순한 오름차순·내림차순 정렬이 아니라 특정 값을 가장 먼저 표시하고 싶은 경우가 있습니다. 예를 들어 숫자 45를 첫 번째로 보여준 뒤, 나머지 값들은 오름차순으로 정렬하는 방법을 예제와 함께 알아보겠습니다.

1. 테이블 생성

먼저 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> Number int
-> );
Query OK, 0 rows affected (0.57 sec)

2. 데이터 삽입

INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(20);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(12);
Query OK, 1 row affected (0.22 sec)

mysql> insert into DemoTable values(14);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(19);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(45);
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable values(56);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(103);
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable values(87);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(98);
Query OK, 1 row affected (0.12 sec)

3. 전체 데이터 조회

SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

출력 결과

+--------+
| Number |
+--------+
| 10 |
| 20 |
| 12 |
| 14 |
| 19 |
| 45 |
| 56 |
| 103 |
| 87 |
| 98 |
+--------+
10 rows in set (0.00 sec)

현재 데이터는 삽입된 순서대로 저장되어 있으며, 별도의 정렬 기준이 적용되지 않은 상태입니다.

4. 특정 값을 맨 앞으로 정렬하는 쿼리

ORDER BY 절 안에 비교 표현식을 활용하면 원하는 값을 우선적으로 정렬할 수 있습니다.

mysql> select *from DemoTable order by (Number=45) DESC, Number;

동작 원리

핵심은 (Number=45)라는 표현식입니다. MySQL에서 비교 표현식은 조건이 참이면 1, 거짓이면 0을 반환합니다. 따라서 정렬 과정은 다음과 같이 진행됩니다.

  • Number가 45인 행은 1을 반환하므로, 내림차순(DESC) 정렬 시 가장 앞에 위치합니다.
  • 나머지 행은 모두 0을 반환하며, 두 번째 정렬 기준인 Number 오름차순에 따라 정렬됩니다.

출력 결과

+--------+
| Number |
+--------+
| 45 |
| 10 |
| 12 |
| 14 |
| 19 |
| 20 |
| 56 |
| 87 |
| 98 |
| 103 |
+--------+
10 rows in set (0.00 sec)

결과를 보면 45가 첫 번째로 표시되고, 나머지 값들은 10부터 103까지 오름차순으로 깔끔하게 정렬된 것을 확인할 수 있습니다.

마무리

이처럼 ORDER BY에 불리언 표현식을 조합하면 별도의 CASE 문 없이도 간단하게 특정 값을 최상단에 배치할 수 있습니다. 여러 개의 값을 우선순위별로 정렬하고 싶다면 CASE WHEN 표현식을 활용하는 방법도 함께 고려해 보세요.