কম্পিউটার টিউটোরিয়াল

MySQL에서 ORDER BY RAND()와 LIMIT으로 랜덤 2개 행 선택하기

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 (...) 조회.

  1. MySQL-এ INSERT INTO SELECT দিয়ে অন্য টেবিল থেকে ডেটা কপি করা

  2. MySQL-এ ডুপ্লিকেট কলাম মানवाले গ্রুপ থেকে ন্যূনতম রো বের করা (MIN + GROUP BY)

  3. MySQL-এ DISTINCT কলাম থেকে গড় (AVG) বের করা

  4. MySQL-এ ভ্যালু ০ হলে অন্য কলাম থেকে ডেটা সিলেক্ট করা