MySQL에서는 ORDER BY 절을 사용하여 하나의 쿼리만으로 여러 열을 기준으로 데이터를 정렬할 수 있습니다. 각 열마다 오름차순(ASC) 또는 내림차순(DESC)을 개별적으로 지정할 수 있으며, 첫 번째 열의 값이 같을 경우 두 번째 열을 기준으로 정렬됩니다.
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)
4. 열 정렬 쿼리 실행하기
다음은 ORDER BY 절을 활용한 정렬 쿼리입니다. 아래 예제에서는 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)
여러 열을 동시에 정렬하는 방법
두 개 이상의 열을 기준으로 정렬하려면 열 이름을 쉼표(,)로 구분하여 나열하고, 각 열의 정렬 방향을 지정하면 됩니다.
SELECT * FROM DemoTable ORDER BY Id ASC, Value DESC;
위 쿼리는 먼저 Id 열을 오름차순으로 정렬한 뒤, Id 값이 동일한 행들에 대해서는 Value 열을 내림차순으로 정렬합니다. 이처럼 ORDER BY 절에 여러 열을 조합하면 복잡한 정렬 조건도 단일 쿼리로 손쉽게 처리할 수 있습니다.