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

MySQL에서 RAND() 함수를 활용해 테이블의 값을 무작위로 섞는 방법

MySQL에서 테이블에 저장된 값을 무작위로 다시 섞으려면 RAND() 함수를 활용하면 됩니다. 이 함수는 각 행마다 임의의 난수를 생성하며, ORDER BY 절과 함께 사용하면 조회 결과의 순서를 매번 다르게 만들 수 있습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable792 (
Name varchar(100),
Subject varchar(100)
);
Query OK, 0 rows affected (0.66 sec)

2. 데이터 삽입하기

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

mysql> insert into DemoTable792 values('Chris','MySQL');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable792 values('David','MySQL');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable792 values('Robert','MongoDB');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable792 values('Carol','MongoDB');
Query OK, 1 row affected (0.18 sec)

3. 전체 레코드 확인하기

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

mysql> select *from DemoTable792;

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

+--------+---------+
| Name | Subject |
+--------+---------+
| Chris | MySQL |
| David | MySQL |
| Robert | MongoDB |
| Carol | MongoDB |
+--------+---------+
4 rows in set (0.00 sec)

4. RAND()로 값 무작위로 섞기

테이블의 값을 무작위로 재배열하는 쿼리는 다음과 같습니다.

mysql> select *from DemoTable792 order by rand();

실행 결과는 아래와 같습니다.

+--------+---------+
| Name | Subject |
+--------+---------+
| Chris | MySQL |
| Robert | MongoDB |
| David | MySQL |
| Carol | MongoDB |
+--------+---------+
4 rows in set (0.00 sec)

이처럼 ORDER BY rand()를 사용하면 기존의 정렬 순서가 사라지고 행들이 무작위 순서로 출력됩니다. 쿼리를 실행할 때마다 결과 순서가 달라지므로, 랜덤 추첨이나 샘플 데이터 추출 등에 유용하게 활용할 수 있습니다.

참고로 LIMIT 절과 함께 사용하면 전체 데이터 중 일부만 무작위로 가져올 수도 있습니다. 예를 들어 select *from DemoTable792 order by rand() limit 2;처럼 작성하면 무작위로 선택된 2개의 행만 반환됩니다. 다만 대용량 테이블에서는 성능 저하가 발생할 수 있으므로, 데이터가 많은 경우 별도의 최적화 기법을 고려하는 것이 좋습니다.