सबक्वेरी के साथ RAND() और ORDER BY का उपयोग
MySQL में आप सबक्वेरी का उपयोग करके पहले रिकॉर्ड को रैंडमली ऑर्डर कर सकते हैं, फिर बाहरी क्वेरी में नाम के अनुसार आरोही क्रम में सॉर्ट कर सकते हैं। सिंटैक्स:
SELECT * FROM (
SELECT * FROM yourTableName ORDER BY RAND() LIMIT anyIntegerValue
) anyVariableName ORDER BY yourColumnName;
उदाहरण
एक टेबल बनाएं जिसमें ID और Name हों:
mysql> CREATE TABLE OrderByRandName (
-> Id INT,
-> Name VARCHAR(100)
-> );
डेटा डालें:
mysql> INSERT INTO OrderByRandName VALUES(100,'John'); mysql> INSERT INTO OrderByRandName VALUES(101,'Bob'); mysql> INSERT INTO OrderByRandName VALUES(102,'Johnson'); mysql> INSERT INTO OrderByRandName VALUES(103,'David'); mysql> INSERT INTO OrderByRandName VALUES(104,'Smith'); mysql> INSERT INTO OrderByRandName VALUES(105,'Taylor'); mysql> INSERT INTO OrderByRandName VALUES(106,'Sam'); mysql> INSERT INTO OrderByRandName VALUES(107,'Robert'); mysql> INSERT INTO OrderByRandName VALUES(108,'Michael'); mysql> INSERT INTO OrderByRandName VALUES(109,'Mark');
सभी रिकॉर्ड देखें:
mysql> SELECT * FROM OrderByRandName;
+------+---------+ | Id | Name | +------+---------+ | 100 | John | | 101 | Bob | | 102 | Johnson | | 103 | David | | 104 | Smith | | 105 | Taylor | | 106 | Sam | | 107 | Robert | | 108 | Michael | | 109 | Mark | +------+---------+
रैंडम ऑर्डर के बाद नाम के अनुसार ASC सॉर्ट
mysql> SELECT * FROM (
-> SELECT * FROM OrderByRandName ORDER BY RAND() LIMIT 10
-> ) 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 | +------+---------+
नोट: आंतरिक सबक्वेरी RAND() से रैंडम पंक्तियां चुनती है, बाहरी क्वेरी उन्हें नाम के अनुसार सॉर्ट करती है।