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

MySQL-এ RAND() দিয়ে র‍্যান্ডম রো সিলেক্ট করা


ORDER BY RAND() LIMIT N

টেবিল থেকে র‍্যান্ডমভাবে ১ বা একাধিক রো পেতে ORDER BY RAND() LIMIT n ব্যবহার করুন। নোট: বড় টেবিলে পারফরম্যান্স সমস্যা হতে পারে।

সিনট্যাক্স

SELECT * FROM yourTable ORDER BY RAND() LIMIT yourIntegerNumber;

উদাহরণ

টেবিল তৈরি

mysql> create table gettingRandomRow (
    -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> CustomerName varchar(100)
    -> );
Query OK, 0 rows affected (0.45 sec)

১৩ রো ইনসার্ট

mysql> insert into gettingRandomRow(CustomerName) values('Chris'),('Robert'),('Ramit'),('James'),('Jace'),('Mike'),('Sam'),('Bob'),('Carol'),('David'),('Maxwell'),('Larry'),('John');
Query OK, 13 rows affected

সকল রেকর্ড

mysql> SELECT * FROM gettingRandomRow;

আউটপুট (১৩ রো)

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
|          1 | Chris        |
|          2 | Robert       |
|          3 | Ramit        |
|          4 | James        |
|          5 | Jace         |
|          6 | Mike         |
|          7 | Sam          |
|          8 | Bob          |
|          9 | Carol        |
|         10 | David        |
|         11 | Maxwell      |
|         12 | Larry        |
|         13 | John         |
+------------+--------------+

Case 1: ১টি র‍্যান্ডম রো

mysql> SELECT * FROM gettingRandomRow ORDER BY RAND() LIMIT 1;

আউটপুট (উদাহরণ: John)

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
|         13 | John         |
+------------+--------------+

Case 2: ২টি র‍্যান্ডম রো

mysql> SELECT * FROM gettingRandomRow ORDER BY RAND() LIMIT 2;

আউটপুট (উদাহরণ: Robert, Ramit)

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
|          2 | Robert       |
|          3 | Ramit        |
+------------+--------------+

Case 3: আবার ২টি র‍্যান্ডম রো (ভিন্ন ফলাফল)

mysql> SELECT * FROM gettingRandomRow ORDER BY RAND() LIMIT 2;

আউটপুট (উদাহরণ: James, Carol)

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
|          4 | James        |
|          9 | Carol        |
+------------+--------------+

পারফরম্যান্স টিপ: বড় টেবিলে (<10K রো) ORDER BY RAND() ধীর। বিকল্প: WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM table))) বা অ্যাপ্লিকেশন লেভেলে র‍্যান্ডম ID জেনারেট করুন।

  1. MySQL-এ একক কোয়েরিতে একাধিক সারি ইনসার্ট করা

  2. MySQL-এ ইনডেক্স ব্যবহার করে একাধিক রো দ্রুত সিলেক্ট করা

  3. MySQL-এ কোয়েরির ফলাফল র‍্যান্ডমলি সাজানো এবং র‍্যান্ডম সারি বের করা

  4. MySQL-এ নির্দিষ্ট শর্ত অনুযায়ী সিঙ্গেল রো বের করা