RAND() फंक्शन को ORDER BY और LIMIT के साथ संयोजित करके हर बार अलग रैंडम नमूना प्राप्त कर सकते हैं।
नमूना डेटा: Employee टेबल
mysql> SELECT * FROM Employee;
+----+--------+--------+
| ID | Name | Salary |
+----+--------+--------+
| 1 | Gaurav | 50000 |
| 2 | Rahul | 20000 |
| 3 | Advik | 25000 |
| 4 | Aarav | 65000 |
| 5 | Ram | 20000 |
| 6 | Mohan | 30000 |
| 7 | Aryan | NULL |
| 8 | Vinay | NULL |
+----+--------+--------+
क्वेरी: 4 रैंडम पंक्तियाँ
mysql> SELECT * FROM employee ORDER BY RAND() LIMIT 4;
कई बार चलाने पर अलग परिणाम
-- पहली बार
+----+-------+--------+
| ID | Name | Salary |
+----+-------+--------+
| 5 | Ram | 20000 |
| 4 | Aarav | 65000 |
| 6 | Mohan | 30000 |
| 8 | Vinay | NULL |
+----+-------+--------+
-- दूसरी बार
+----+--------+--------+
| ID | Name | Salary |
+----+--------+--------+
| 6 | Mohan | 30000 |
| 8 | Vinay | NULL |
| 2 | Rahul | 20000 |
| 1 | Gaurav | 50000 |
+----+--------+--------+
-- तीसरी बार
+----+-------+--------+
| ID | Name | Salary |
+----+-------+--------+
| 3 | Advik | 25000 |
| 8 | Vinay | NULL |
| 7 | Aryan | NULL |
| 5 | Ram | 20000 |
+----+-------+--------+
व्याख्या
ORDER BY RAND()प्रत्येक पंक्ति को रैंडम मान असाइन करता है और क्रमबद्ध करता हैLIMIT 4पहले 4 लेता है- हर निष्पादन पर नया रैंडम क्रम
प्रदर्शन चेतावनी
- बड़ी टेबल्स पर
ORDER BY RAND()धीमा होता है (फुल टेबल स्कैन + फाइलसॉर्ट) - बड़े डेटासेट के लिए:
WHERE RAND() < 0.01या प्राइमरी की रेंज सैंपलिंग उपयोग करें
बेहतर विकल्प (बड़ी टेबल्स)
-- बर्नौली सैंपलिंग (लगभग 1% पंक्तियाँ)
SELECT * FROM large_table WHERE RAND() < 0.01 LIMIT 100;
-- या प्राइमरी की रेंज
SELECT * FROM large_table
WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM large_table)))
ORDER BY id LIMIT 4;