MySQL-এ সাবকোয়েরি এবং ORDER BY RAND() ব্যবহার করে শেষ Nটি রেকর্ড থেকে র্যান্ডম রেকর্ড বের করা যায়।
উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable773 (StudentId int); Query OK, 0 rows affected (0.59 sec)
২৩টি রেকর্ড ইনসার্ট করা হয়েছে (১০০ থেকে ৯৭ পর্যন্ত):
mysql> insert into DemoTable773 values(100); ... mysql> insert into DemoTable773 values(97); Query OK, 1 row affected each
সকল রেকর্ড দেখানো
mysql> select * from DemoTable773;
+-----------+ | StudentId | +-----------+ | 100 | | 200 | | 300 | | 400 | | 500 | | 1 | | 2 | | ... | | 97 | +-----------+ 23 rows in set (0.00 sec)
শেষ ২০টি থেকে ৫টি র্যান্ডম রেকর্ড বের করা
mysql> select * from (
select * from DemoTable773 order by StudentId desc limit 20
) AS RANDOM_OUTPUT order by rand() limit 5;
+-----------+ | StudentId | +-----------+ | 95 | | 4 | | 10 | | 7 | | 300 | +-----------+ 5 rows in set (0.51 sec)
ব্যাখ্যা
order by StudentId desc limit 20- последним ২০টি রেকর্ড নেয় (ID অনুযায়ী ডেসেন্ডিং)order by rand()- সাবকোয়েরির ফলাফলকে র্যান্ডমাইজ করেlimit 5- 그중 ৫টি নেয়
দ্রষ্টব্য: বড় টেবিলে ORDER BY RAND() ধীর হতে পারে। সেক্ষেত্রে অন্যান্য পদ্ধতি (যেমন PRIMARY KEY র্যান্ডমাইজেশন) ভালো কাজ করে।