MySQL에서는 ORDER BY 절에 여러 개의 열을 쉼표로 구분하여 나열함으로써 다중 열 정렬을 손쉽게 수행할 수 있습니다. 이 글에서는 테이블 생성부터 데이터 삽입, 그리고 실제 정렬 쿼리 실행까지 단계별 예제와 함께 자세히 살펴보겠습니다.
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Id int,
-> Value int
-> );
Query OK, 0 rows affected (0.68 sec)
2단계: 데이터 삽입
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(100,85885);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(101,885995474);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(100,895943);
Query OK, 1 row affected (0.20 sec)
3단계: 전체 레코드 조회
SELECT 문을 사용해 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 출력 결과를 생성합니다.
+------+-----------+
| Id | Value |
+------+-----------+
| 100 | 85885 |
| 101 | 885995474 |
| 100 | 895943 |
+------+-----------+
3 rows in set (0.00 sec)
단일 열 기준 정렬
다음은 Value 열을 기준으로 내림차순(DESC) 정렬하는 쿼리입니다.
mysql> select Id,Value from DemoTable order by Value DESC;
실행 결과는 아래와 같습니다.
+------+-----------+
| Id | Value |
+------+-----------+
| 101 | 885995474 |
| 100 | 895943 |
| 100 | 85885 |
+------+-----------+
3 rows in set (0.00 sec)
진짜 다중 열 정렬하기
여러 열을 동시에 정렬하려면 ORDER BY 절에 열 이름을 쉼표로 구분하여 나열하고, 각 열마다 오름차순(ASC) 또는 내림차순(DESC)을 지정하면 됩니다. MySQL은 첫 번째 열을 기준으로 먼저 정렬한 뒤, 같은 값이 있을 경우 두 번째 열을 기준으로 정렬합니다.
예를 들어 Id는 오름차순으로, 같은 Id 내에서는 Value를 내림차순으로 정렬하려면 다음과 같이 작성합니다.
mysql> select Id,Value from DemoTable order by Id ASC, Value DESC;
실행 결과는 아래와 같습니다.
+------+-----------+
| Id | Value |
+------+-----------+
| 100 | 895943 |
| 100 | 85885 |
| 101 | 885995474 |
+------+-----------+
3 rows in set (0.00 sec)
이처럼 ORDER BY 절을 활용하면 하나 또는 여러 개의 열을 원하는 순서대로 자유롭게 정렬할 수 있습니다. 참고로 ASC는 기본값이므로 생략해도 되며, DESC만 명시적으로 지정하면 됩니다.