ORDER BY 절에 여러 열 지정하기
MySQL에서 정렬된 출력을 얻으려면 ORDER BY 절을 사용합니다. 만약 하나의 열이 아닌 여러 열을 기준으로 데이터를 정렬하고 싶다면, ORDER BY 절에 쉼표(,)로 구분하여 여러 개의 열 이름을 나열하면 됩니다.
이때 MySQL은 먼저 첫 번째로 지정된 열을 기준으로 오름차순(기본값) 정렬을 수행한 뒤, 첫 번째 열의 값이 동일한 행들에 대해서만 두 번째 열을 기준으로 다시 정렬합니다. 이 원리를 이해하면 복잡한 조건의 정렬도 손쉽게 처리할 수 있습니다.
다음 예제는 Student 테이블의 데이터를 Name 열을 기준으로 먼저 정렬하고, Name이 같은 경우에는 Address 열을 기준으로 추가 정렬하는 방법을 보여줍니다.
mysql> Select * from Student ORDER BY Name, Address; +------+---------+---------+-----------+ | Id | Name | Address | Subject | +------+---------+---------+-----------+ | 2 | Aarav | Mumbai | History | | 1 | Gaurav | Delhi | Computers | | 15 | Harshit | Delhi | Commerce | | 17 | Raman | Shimla | Computers | +------+---------+---------+-----------+ 4 rows in set (0.12 sec)
결과 분석
위 쿼리의 실행 결과를 살펴보면, 모든 행이 먼저 Name 열의 알파벳 순서(Aarav → Gaurav → Harshit → Raman)대로 정렬되어 있는 것을 확인할 수 있습니다. 이 예제에서는 Name 값이 모두 고유하기 때문에 두 번째 기준인 Address 열까지 적용될 필요가 없었습니다.
참고 사항
- 각 열마다 개별적으로 ASC(오름차순) 또는 DESC(내림차순)를 지정할 수 있습니다. 예:
ORDER BY Name ASC, Address DESC - 정렬 방향을 명시하지 않으면 기본적으로 오름차순(ASC)이 적용됩니다.
- 여러 열 정렬은 첫 번째 열에 중복된 값이 많을 때 특히 유용합니다.