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 জেনারেট করুন।