MySQL-এ রেকর্ডগুলো র্যান্ডমলি সাজিয়ে তারপর নির্দিষ্ট কলাম (যেমন নাম) অনুযায়ী আরোহী ক্রমে (ASC) দেখতে চাইলে সাবকোয়েরি (Subquery) ব্যবহার করতে হয়। RAND() ফাংশন র্যান্ডম সর্টিং করে, আবার বাহ্যিক কোয়েরিতে ORDER BY দিয়ে নাম অনুযায়ী সাজানো হয়।
সিনট্যাক্স
SELECT * FROM (
SELECT * FROM `your_table_name` ORDER BY RAND() LIMIT n
) AS `temp_table` ORDER BY `your_column_name`;
উদাহরণ: টেবিল তৈরি ও ডেটা ইনসার্ট
CREATE TABLE `OrderByRandName` (
`Id` INT,
`Name` VARCHAR(100)
);
INSERT INTO `OrderByRandName` VALUES
(100, 'John'), (101, 'Bob'), (102, 'Johnson'),
(103, 'David'), (104, 'Smith'), (105, 'Taylor'),
(106, 'Sam'), (107, 'Robert'), (108, 'Michael'),
(109, 'Mark');
সব রেকর্ড দেখুন
SELECT * FROM `OrderByRandName`;
র্যান্ডম সিলেক্ট করে নাম অনুযায়ী ASC সর্ট
SELECT * FROM (
SELECT * FROM `OrderByRandName` ORDER BY RAND() LIMIT 10
) AS `tbl1` ORDER BY `Name`;
ফলাফল (নাম আরোহী ক्रमে):
+------+---------+
| Id | Name |
+------+---------+
| 101 | Bob |
| 103 | David |
| 100 | John |
| 102 | Johnson |
| 109 | Mark |
| 108 | Michael |
| 107 | Robert |
| 106 | Sam |
| 104 | Smith |
| 105 | Taylor |
+------+---------+
নোট: LIMIT 10 এখানে টেবিলের মোট রো সংখ্যা বা প্রয়োজনীয় সংখ্যা অনুযায়ী পরিবর্তন করুন। বড় টেবিলে ORDER BY RAND() পারফরম্যান্স প্রভাবিত করতে পারে।