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

SQL에서 MOD() 함수로 홀수 행만 선택하고 내림차순으로 정렬하는 방법

SQL에서 대체 행(홀수 행)을 내림차순으로 조회하는 방법

SQL에서 테이블의 모든 대체 행, 즉 홀수 번째 행만 가져오고 싶다면 WHERE 절에서 MOD() 함수를 사용하면 됩니다. 여기에 ORDER BY ... DESC를 함께 사용하면 결과를 내림차순으로 정렬할 수 있습니다.

기본적인 쿼리 형태는 다음과 같습니다.

SELECT * FROM yourTableName
WHERE MOD(yourColumnName, 2) = 1
ORDER BY yourColumnName DESC;

MOD(columnName, 2) = 1 조건은 해당 열의 값이 2로 나누었을 때 나머지가 1인 행, 즉 홀수 값(1, 3, 5, ...)을 가진 행만 필터링합니다.

1단계: 테이블 생성하기

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

mysql> CREATE TABLE DemoTable (
UniqueId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName VARCHAR(40),
ClientAge INT
);
Query OK, 0 rows affected (1.02 sec)

2단계: 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> INSERT INTO DemoTable(ClientName, ClientAge) VALUES('Chris', 34);
Query OK, 1 row affected (0.47 sec)
mysql> INSERT INTO DemoTable(ClientName, ClientAge) VALUES('Tom', 45);
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable(ClientName, ClientAge) VALUES('Sam', 36);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable(ClientName, ClientAge) VALUES('Carol', 42);
Query OK, 1 row affected (0.25 sec)
mysql> INSERT INTO DemoTable(ClientName, ClientAge) VALUES('David', 38);
Query OK, 1 row affected (0.12 sec)

3단계: 전체 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> SELECT * FROM DemoTable;

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

+----------+------------+-----------+
| UniqueId | ClientName | ClientAge |
+----------+------------+-----------+
| 1 | Chris | 34 |
| 2 | Tom | 45 |
| 3 | Sam | 36 |
| 4 | Carol | 42 |
| 5 | David | 38 |
+----------+------------+-----------+
5 rows in set (0.00 sec)

4단계: 홀수 행만 선택하여 내림차순으로 정렬하기

이제 MOD() 함수를 WHERE 절에 적용해 UniqueId가 홀수인 행만 선택하고, ORDER BY DESC로 내림차순 정렬합니다.

mysql> SELECT * FROM DemoTable
WHERE MOD(UniqueId, 2) = 1
ORDER BY UniqueId DESC;

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

+----------+------------+-----------+
| UniqueId | ClientName | ClientAge |
+----------+------------+-----------+
| 5 | David | 38 |
| 3 | Sam | 36 |
| 1 | Chris | 34 |
+----------+------------+-----------+
3 rows in set (0.00 sec)

결과 분석

위 출력 결과를 보면 UniqueId가 1, 3, 5인 세 개의 행만 선택되었고, ID가 큰 순서부터 즉 내림차순(5 → 3 → 1)으로 정렬되어 표시된 것을 확인할 수 있습니다.

참고로 짝수 행만 가져오고 싶다면 조건을 MOD(yourColumnName, 2) = 0으로 변경하면 됩니다. 이처럼 MOD() 함수는 특정 간격의 행을 선택하는 데 매우 유용하게 활용됩니다.