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

MySQL-এ RAND() ব্যবহার করে টেবিলের রেকর্ড র‍‍‍্যান্ডমলি শাফল করা

MySQL-এ রেকর্ডগুলো র‍্যান্ডম ক্রমে পাওয়ার জন্য ORDER BY RAND() ব্যবহার করা হয়। এটি নমুনা বাছাই বা কুইজ অ্যাপ্লিকেশনে কাজে লাগে।

টেবিল তৈরি ও ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable792 (Name VARCHAR(100), Subject VARCHAR(100));
Query OK, 0 rows affected (0.66 sec)
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)

সকল রেকর্ড

mysql> SELECT * FROM DemoTable792;

আউটপুট:

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

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() বড় টেবিলে খুব ধীর (ফুল টেবিল স্ক্যান + সর্ট)।
  • বড় টেবিলে ব্যবহার করবেন না। বিকল্প:

বিকল্প পদ্ধতি (দ্রুত)

-- ১. র‍্যান্ডম অফসেট (একটি রো জন্য)
SELECT * FROM table 
WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM table))) 
ORDER BY id LIMIT 1;

-- ২. একাধিক র‍্যান্ডম রো (WHERE RAND() < probability)
SELECT * FROM table WHERE RAND() < 0.01 LIMIT 10;

নোট: ছোট টেবিলে ORDER BY RAND() কোনো সমস্যা নেই।

  1. Java MySQL ব্যবহার করে MySQL টেবিল আপডেট করা

  2. Java-এ JDBC ResultSetMetaData ব্যবহার করে MySQL টেবিলের কলাম সংখ্যা বের করা

  3. MySQL에서 NULL 또는 비NULL 여부로 전체 컬럼 업데이트하기

  4. MySQL-এ DATE_ADD ব্যবহার করে টেবিলের তারিখ আপডেট করা (বছর যোগ/বিয়োগ)