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

MySQL에서 두 개의 열(컬럼)을 기준으로 테이블 정렬하는 방법

MySQL에서 하나의 쿼리로 두 개의 열을 기준으로 결과를 정렬해야 하는 경우가 자주 있습니다. 예를 들어 학생 목록을 학번나이를 동시에 기준으로 오름차순 또는 내림차순으로 정렬하고 싶다면, ORDER BY 절에 여러 열을 쉼표(,)로 구분하여 지정하면 됩니다.

기본 문법

두 개의 열을 기준으로 정렬할 때 사용하는 기본 문법은 다음과 같습니다.

ORDER BY yourColumnName1 DESC, yourColumnName2 DESC;

각 열 뒤에 ASC(오름차순) 또는 DESC(내림차순)를 붙여 정렬 방향을 개별적으로 지정할 수 있습니다.

예제 테이블 생성하기

먼저 실습에 사용할 테이블을 만들어 보겠습니다.

mysql> create table OrderByDemo
   -> (
   -> StudentId int,
   -> StudentName varchar(100),
   -> StudentAge int
   -> );
Query OK, 0 rows affected (0.57 sec)

데이터 삽입하기

INSERT 명령을 사용해 테이블에 샘플 데이터를 입력합니다.

mysql> insert into OrderByDemo values(1,'John',23);
Query OK, 1 row affected (0.20 sec)
mysql> insert into OrderByDemo values(3,'Johnson',24);
Query OK, 1 row affected (0.27 sec)
mysql> insert into OrderByDemo values(4,'Carol',26);
Query OK, 1 row affected (0.14 sec)
mysql> insert into OrderByDemo values(2,'David',20);
Query OK, 1 row affected (0.13 sec)

두 개의 열을 오름차순(ASC)으로 정렬하기

이제 앞서 소개한 문법을 적용해 두 개의 열을 기준으로 정렬해 보겠습니다. 아래 쿼리는 StudentId와 StudentAge를 모두 오름차순으로 정렬합니다.

mysql> select *from OrderByDemo order by StudentId ASC, StudentAge ASC;

실행 결과는 다음과 같습니다. 두 열이 모두 오름차순으로 정렬된 것을 확인할 수 있습니다.

+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
|         1 | John        |         23 |
|         2 | David       |         20 |
|         3 | Johnson     |         24 |
|         4 | Carol       |         26 |
+-----------+-------------+------------+
4 rows in set (0.00 sec)

두 개의 열을 내림차순(DESC)으로 정렬하기

반대로 DESC 명령을 사용하면 내림차순으로 정렬할 수 있습니다.

mysql> select *from OrderByDemo order by StudentId DESC,StudentAge DESC;

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

+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
|         4 | Carol       |         26 |
|         3 | Johnson     |         24 |
|         2 | David       |         20 |
|         1 | John        |         23 |
+-----------+-------------+------------+
4 rows in set (0.00 sec)

정렬 우선순위 유의 사항

참고: ORDER BY 절에 여러 열을 지정하면 먼저 작성된 첫 번째 열의 정렬이 최우선으로 적용됩니다. 즉, 첫 번째 열의 값이 같은 행들에 한해서만 두 번째 열의 정렬 기준이 적용됩니다. 따라서 업무 요구사항에 맞게 열의 순서와 각 열의 정렬 방향(ASC/DESC)을 신중하게 지정하는 것이 중요합니다.