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

MySQL에서 여러 열(컬럼)을 기준으로 정렬하는 방법 완벽 가이드

MySQL에서 여러 열을 기준으로 정렬하기

MySQL에서 ORDER BY 절을 사용하면 하나의 열뿐만 아니라 여러 열을 기준으로 결과를 정렬할 수 있습니다. 여러 열로 정렬할 때는 첫 번째 열의 값이 같은 경우에만 두 번째 열 기준으로, 두 번째 열까지 같으면 세 번째 열 기준으로 순차적으로 정렬됩니다.

여러 열을 기준으로 정렬하는 기본 문법은 다음과 같습니다.

SELECT * FROM yourTableName
ORDER BY yourColumnName1 DESC, yourColumnName2, yourColumnName3;

위 문법에서 첫 번째 열은 내림차순(DESC)으로 정렬되고, 나머지 열들은 기본값인 오름차순(ASC)으로 정렬됩니다.

예제 테이블 생성

실습을 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table demo29
-> (
-> value1 int,
-> value2 int
-> );
Query OK, 0 rows affected (1.67 sec)

샘플 데이터 삽입

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

mysql> insert into demo29 values(10,500);
Query OK, 1 row affected (0.15 sec)

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

mysql> insert into demo29 values(9,500);
Query OK, 1 row affected (0.12 sec)

mysql> insert into demo29 values(13,400);
Query OK, 1 row affected (0.11 sec)

mysql> insert into demo29 values(45,500);
Query OK, 1 row affected (0.14 sec)

mysql> insert into demo29 values(11,400);
Query OK, 1 row affected (0.10 sec)

테이블 데이터 조회

SELECT 문을 사용하여 테이블의 전체 레코드를 확인해 보겠습니다.

mysql> select *from demo29;

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

+--------+--------+
| value1 | value2 |
+--------+--------+
| 10 | 500 |
| 14 | 400 |
| 9 | 500 |
| 13 | 400 |
| 45 | 500 |
| 11 | 400 |
+--------+--------+
6 rows in set (0.00 sec)

여러 열을 기준으로 정렬하는 쿼리

이제 value2 열은 내림차순으로, value1 열은 오름차순으로 정렬해 보겠습니다.

mysql> select *from demo29
-> order by value2 desc,value1;

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

+--------+--------+
| value1 | value2 |
+--------+--------+
| 9 | 500 |
| 10 | 500 |
| 45 | 500 |
| 11 | 400 |
| 13 | 400 |
| 14 | 400 |
+--------+--------+
6 rows in set (0.00 sec)

결과 분석

출력 결과를 살펴보면 다음과 같은 정렬 규칙이 적용된 것을 확인할 수 있습니다.

1. 첫 번째 우선순위: value2 열이 내림차순(DESC)으로 정렬되어 500인 행들이 먼저 표시되고, 그다음 400인 행들이 표시됩니다.

2. 두 번째 우선순위: value2 값이 동일한 행들 사이에서는 value1 열이 오름차순(ASC)으로 정렬됩니다. 예를 들어 value2가 500인 그룹에서는 9 → 10 → 45 순서로, value2가 400인 그룹에서는 11 → 13 → 14 순서로 배치됩니다.

이처럼 MySQL의 ORDER BY 절에서 여러 열을 쉼표(,)로 구분하여 지정하면, 앞에 위치한 열부터 우선순위를 가지며 각 열마다 개별적으로 ASC 또는 DESC 옵션을 지정할 수 있습니다. 이 방법을 활용하면 복잡한 조건의 데이터 정렬도 손쉽게 처리할 수 있습니다.