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

MySQL에서 특정 항목 하나를 제외하고 알파벳순으로 정렬하는 방법

MySQL에서 데이터를 알파벳순으로 정렬하되 특정 항목 하나만 맨 뒤로 보내고 싶다면 ORDER BY 절을 활용하면 됩니다. 핵심은 정렬 기준으로 불리언(Boolean) 표현식을 함께 사용하는 것입니다. 이번 글에서는 예제 테이블을 만들고 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 이름을 저장할 테이블을 생성합니다.

mysql> create table DemoTable
(
    FirstName varchar(200)
);
Query OK, 0 rows affected (0.93 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 여러 개의 이름을 테이블에 추가합니다.

mysql> insert into DemoTable values('Larry');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Carol');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.18 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 현재 테이블에 저장된 전체 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+-----------+
| FirstName |
+-----------+
| Larry     |
| Carol     |
| Sam       |
| Mike      |
| David     |
+-----------+
5 rows in set (0.00 sec)

4. 특정 항목을 제외한 알파벳순 정렬

이제 'Mike'라는 이름만 정렬 대상에서 제외하고 나머지는 알파벳순으로 정렬해 보겠습니다. 아래 쿼리처럼 FirstName="Mike"라는 조건식을 ORDER BY의 첫 번째 기준으로 사용하면 됩니다.

mysql> select *from DemoTable order by FirstName="Mike",FirstName;

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

+-----------+
| FirstName |
+-----------+
| Carol     |
| David     |
| Larry     |
| Sam       |
| Mike      |
+-----------+
5 rows in set (0.00 sec)

동작 원리 설명

이 쿼리가 작동하는 원리는 다음과 같습니다.

  • FirstName="Mike" 조건은 해당 행에 대해 1(True), 그 외에는 0(False)을 반환합니다.
  • MySQL은 오름차순(ASC) 정렬 시 0이 1보다 앞에 오므로, 'Mike'가 아닌 모든 행이 먼저 배치됩니다.
  • 두 번째 정렬 기준인 FirstName에 의해 나머지 이름들이 알파벳순으로 정렬됩니다.
  • 결과적으로 'Mike'만 맨 마지막에 위치하게 됩니다.

반대로 특정 항목을 맨 앞으로 보내고 싶다면 ORDER BY FirstName="Mike" DESC, FirstName처럼 내림차순(DESC)을 적용하면 됩니다. 이 기법은 공지사항 고정, 관리자 계정 우선 노출 등 실무에서도 유용하게 활용할 수 있습니다.