MySQL에서 ORDER BY 절을 사용하면 이름처럼 중복된 값이 존재하는 레코드의 데이터도 손쉽게 정렬할 수 있습니다. 이 글에서는 예제 테이블을 만들고, 특정 이름(중복 값)에 해당하는 점수들을 내림차순으로 정렬하는 과정을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 CREATE TABLE 문으로 테스트용 테이블을 생성합니다.
mysql> create table DemoTable788 ( FirstName varchar(100), Score int ); Query OK, 0 rows affected (1.89 sec)
2. 샘플 데이터 삽입
INSERT 명령을 사용해 중복된 이름이 포함된 레코드를 여러 개 입력합니다.
mysql> insert into DemoTable788 values('Chris',78);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable788 values('Robert',67);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable788 values('Chris',98);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable788 values('Chris',56);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable788 values('Robert',43);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable788 values('Robert',97);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable788 values('Chris',79);
Query OK, 1 row affected (0.12 sec)3. 전체 레코드 조회
SELECT 문으로 테이블의 모든 데이터를 확인합니다.
mysql> select *from DemoTable788;
실행 결과는 다음과 같습니다.
+-----------+-------+ | FirstName | Score | +-----------+-------+ | Chris | 78 | | Robert | 67 | | Chris | 98 | | Chris | 56 | | Robert | 43 | | Robert | 97 | | Chris | 79 | +-----------+-------+ 7 rows in set (0.00 sec)
4. 중복 레코드 정렬하기
이제 중복된 이름 'Chris'에 해당하는 레코드만 추출하고, ORDER BY ... DESC를 사용해 점수를 내림차순으로 정렬합니다.
mysql> select Score from DemoTable788 where FirstName='Chris' order by Score DESC;
실행 결과는 다음과 같습니다.
+-------+ | Score | +-------+ | 98 | | 79 | | 78 | | 56 | +-------+ 4 rows in set (0.00 sec)
마무리
위 예제에서 볼 수 있듯이, WHERE 절로 중복 값을 가진 레코드를 필터링한 뒤 ORDER BY 절을 함께 사용하면 원하는 기준(오름차순 또는 내림차순)으로 데이터를 깔끔하게 정렬할 수 있습니다. 오름차순 정렬이 필요하다면 DESC 대신 ASC(기본값)를 사용하면 됩니다.