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

MySQL에서 동일한 필드에 정렬 순서를 적용하는 쿼리 작성법

MySQL에서 특정 필드의 값을 기준으로 정렬 순서를 조정하려면 ORDER BY IF() 구문을 활용할 수 있습니다. 이 방법을 사용하면 특정 값(예: 99)을 우선적으로 처리하고 나머지 값을 오름차순으로 정렬하는 등 유연한 정렬이 가능합니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable801 (
 Score int
);
Query OK, 0 rows affected (0.69 sec)

2. 레코드 삽입하기

INSERT 명령어를 사용해 테이블에 여러 개의 점수 데이터를 입력합니다.

mysql> insert into DemoTable801 values(30);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable801 values(99);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable801 values(45);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable801 values(55);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable801 values(99);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable801 values(69);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable801 values(25);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable801 values(79);
Query OK, 1 row affected (0.12 sec)

3. 전체 레코드 조회하기

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

mysql> select *from DemoTable801;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-------+
| Score |
+-------+
| 30    |
| 99    |
| 45    |
| 55    |
| 99    |
| 69    |
| 25    |
| 79    |
+-------+
8 rows in set (0.00 sec)

4. 동일한 필드에 정렬 순서 적용하기

다음은 동일한 필드(Score)에 대해 조건부 정렬을 수행하는 쿼리입니다. IF() 함수를 통해 Score가 99인 경우 1, 그렇지 않은 경우 0을 반환하도록 하여, 99가 아닌 값들이 먼저 오름차순으로 정렬되고 이후 99가 출력됩니다.

mysql> select *from DemoTable801 order by if(Score=99,1,0), Score;

실행 결과는 다음과 같습니다.

+-------+
| Score |
+-------+
| 25    |
| 30    |
| 45    |
| 55    |
| 69    |
| 79    |
| 99    |
| 99    |
+-------+
8 rows in set (0.00 sec)

결과를 보면 Score 값들이 오름차순으로 정렬되었으며, 99라는 특정 값은 마지막에 배치된 것을 확인할 수 있습니다. 이처럼 ORDER BY와 IF() 함수를 조합하면 단일 필드 내에서도 원하는 정렬 규칙을 손쉽게 구현할 수 있습니다.