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

MySQL에서 모듈로(%) 연산 결과를 기준으로 레코드를 ORDER BY로 정렬하는 방법

MySQL에서 나머지 연산자(모듈로, %)의 결과값을 기준으로 레코드를 정렬하려면 ORDER BY 절과 함께 모듈로 연산을 사용하면 됩니다. 이 방법은 학번이 짝수인지 홀수인지, 또는 특정 수로 나눈 나머지 값에 따라 데이터를 그룹화하여 정렬할 때 유용합니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    StudentId int,
    StudentName varchar(100)
);
Query OK, 0 rows affected (1.88 sec)

2. 샘플 데이터 삽입하기

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

mysql> insert into DemoTable values(100,'Chris');
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable values(101,'Robert');
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable values(102,'David');
Query OK, 1 row affected (0.94 sec)
mysql> insert into DemoTable values(103,'Mike');
Query OK, 1 row affected (0.23 sec)

3. 전체 레코드 확인하기

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|       100 | Chris       |
|       101 | Robert      |
|       102 | David       |
|       103 | Mike        |
+-----------+-------------+
4 rows in set (0.00 sec)

4. 모듈로 연산 결과를 기준으로 정렬하는 쿼리

이제 StudentId % 2(2로 나눈 나머지)와 StudentId % 3(3으로 나눈 나머지) 값을 기준으로 오름차순 정렬하는 쿼리입니다.

mysql> select StudentId,StudentName,StudentId % 2,StudentId % 3 from DemoTable order by StudentId % 2,StudentId % 3;

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

+-----------+-------------+---------------+---------------+
| StudentId | StudentName | StudentId % 2 | StudentId % 3 |
+-----------+-------------+---------------+---------------+
|       102 | David       |             0 |             0 |
|       100 | Chris       |             0 |             1 |
|       103 | Mike        |             1 |             1 |
|       101 | Robert      |             1 |             2 |
+-----------+-------------+---------------+---------------+
4 rows in set (0.00 sec)

결과 분석

출력 결과를 보면 레코드가 단순히 학번 순서가 아닌, 모듈로 연산 결과에 따라 정렬된 것을 확인할 수 있습니다.

  • David(102): 102 % 2 = 0, 102 % 3 = 0 → 가장 먼저 정렬됨
  • Chris(100): 100 % 2 = 0, 100 % 3 = 1 → 두 번째로 정렬됨
  • Mike(103): 103 % 2 = 1, 103 % 3 = 1 → 세 번째로 정렬됨
  • Robert(101): 101 % 2 = 1, 101 % 3 = 2 → 마지막에 정렬됨

즉, MySQL은 ORDER BY 절에 명시된 첫 번째 기준(StudentId % 2)으로 먼저 정렬하고, 값이 동일한 경우 두 번째 기준(StudentId % 3)으로 다시 정렬합니다. 이처럼 모듈로 연산을 활용하면 짝수/홀수 구분이나 주기적인 패턴에 따라 유연하게 데이터를 정렬할 수 있습니다.