ORDER BY RAND()로 무작위 정렬 후 LIMIT N으로 상위 N개만 가져오면 랜덤 샘플링이 됩니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable1815 (
-> Question TEXT
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1815 VALUES('What is your name?');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1815 VALUES('What is your college name?');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1815 VALUES('What is your nick name?');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1815 VALUES('What is your enemy name?');
Query OK, 1 row affected (0.00 sec)
데이터 조회
mysql> SELECT * FROM DemoTable1815;
+----------------------------+ | Question | +----------------------------+ | What is your name? | | What is your college name? | | What is your nick name? | | What is your enemy name? | +----------------------------+ 4 rows in set (0.00 sec)
랜덤 2개 선택
mysql> SELECT * FROM DemoTable1815 ORDER BY RAND() LIMIT 2;
+----------------------------+ | Question | +----------------------------+ | What is your college name? | | What is your enemy name? | +----------------------------+ 2 rows in set (0.00 sec)
주의: ORDER BY RAND()는 전체 테이블을 읽고 정렬하므로 대용량(수만 행 이상)에서 매우 느립니다. 대안: WHERE RAND() < 0.01 샘플링, 또는 애플리케이션 레벨에서 PK 범위 내 랜덤 ID 생성 후 WHERE Id IN (...) 조회.