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

MySQL 데이터베이스에서 임의(랜덤) 항목을 선택하는 방법

MySQL에서 테이블의 데이터를 조회할 때 ORDER BY RAND() 절과 LIMIT를 함께 사용하면 임의의(랜덤한) 행을 손쉽게 선택할 수 있습니다. 이번 글에서는 예제를 통해 MySQL 데이터베이스에서 무작위 항목 하나를 가져오는 방법을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

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

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName varchar(100),
    ClientAge int
);
Query OK, 0 rows affected (0.92 sec)

AUTO_INCREMENT로 설정된 Id 컬럼이 기본 키 역할을 하며, 고객 이름(ClientName)과 나이(ClientAge) 정보를 저장하는 구조입니다.

2. 샘플 데이터 삽입

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

mysql> insert into DemoTable(ClientName,ClientAge) values('Robert',45);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(ClientName,ClientAge) values('Mike',55);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(ClientName,ClientAge) values('Bob',42);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable(ClientName,ClientAge) values('Sam',47);
Query OK, 1 row affected (0.11 sec)

3. 전체 레코드 확인

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

mysql> select *from DemoTable;

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

+----+------------+-----------+
| Id | ClientName | ClientAge |
+----+------------+-----------+
|  1 | Robert     |        45 |
|  2 | Mike       |        55 |
|  3 | Bob        |        42 |
|  4 | Sam        |        47 |
+----+------------+-----------+
4 rows in set (0.00 sec)

총 4개의 레코드가 정상적으로 저장된 것을 확인할 수 있습니다.

4. 임의 항목 선택 쿼리

이제 MySQL 데이터베이스에서 무작위 항목 하나를 선택하는 핵심 쿼리입니다. ORDER BY RAND()로 결과를 랜덤하게 정렬한 뒤, LIMIT 1로 첫 번째 행만 가져오면 됩니다.

mysql> select *from DemoTable order by rand() limit 1;

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

+----+------------+-----------+
| Id | ClientName | ClientAge |
+----+------------+-----------+
|  3 | Bob        |        42 |
+----+------------+-----------+
1 row in set (0.00 sec)

이 쿼리를 실행할 때마다 매번 다른 행이 무작위로 반환됩니다. 위 예제에서는 이번 실행에서 'Bob'이라는 레코드가 선택되었습니다.

참고 사항

ORDER BY RAND()는 간편하지만, 테이블의 모든 행을 읽은 후 정렬하기 때문에 데이터 양이 많은 대형 테이블에서는 성능 저하가 발생할 수 있습니다. 소규모 테이블에는 적합하며, 대용량 데이터에서는 랜덤 키 컬럼 활용 등 다른 최적화 기법을 고려하는 것이 좋습니다.