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

MySQL 테이블에서 홀수 번째 레코드만 골라 조회하는 방법

MySQL에서 테이블에 저장된 데이터 중 홀수 번째(1, 3, 5...) 레코드만 골라서 조회해야 하는 경우가 있습니다. 이 개념을 이해하기 위해 다음과 같은 데이터가 들어 있는 'Information' 테이블을 예로 들어 보겠습니다.

mysql> Select * from Information;
+----+---------+
| id | Name    |
+----+---------+
| 1  | Gaurav  |
| 2  | Ram     |
| 3  | Rahul   |
| 4  | Aarav   |
| 5  | Aryan   |
| 6  | Krishan |
+----+---------+
6 rows in set (0.00 sec)

홀수 레코드 조회 쿼리

아래 쿼리는 위 'Information' 테이블에서 홀수 번째 레코드, 즉 id가 1, 3, 5인 행만 가져옵니다.

mysql> Select id,Name from information group by id having mod(id,2) = 1;
+----+--------+
| id | Name   |
+----+--------+
| 1  | Gaurav |
| 3  | Rahul  |
| 5  | Aryan  |
+----+--------+
3 rows in set (0.09 sec)

쿼리 동작 원리

여기서 핵심 역할을 하는 것은 MOD() 함수입니다. MOD(id, 2)는 id 값을 2로 나눈 나머지를 반환하는데, 그 결과가 1이라면 해당 레코드는 홀수 번째라는 의미입니다. HAVING 절은 GROUP BY로 묶인 결과에 조건을 적용하므로, mod(id,2) = 1 조건을 만족하는 레코드만 최종 결과에 남게 됩니다.

반대로 짝수 번째 레코드만 조회하고 싶다면 조건식을 mod(id,2) = 0으로 변경하면 됩니다. 이처럼 MOD 함수와 HAVING 절을 조합하면 별도의 서브쿼리나 추가 컬럼 없이 간단하게 원하는 간격의 레코드를 추출할 수 있습니다.