टेबल में मानों को फेरबदल करने के लिए MySQL RAND() का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> create table DemoTable792 ( Name varchar(100), Subject varchar(100) ); Query OK, 0 rows affected (0.66 sec)
इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें:
mysql> insert into DemoTable792 values('Chris','MySQL');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable792 values('David','MySQL');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable792 values('Robert','MongoDB');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable792 values('Carol','MongoDB');
Query OK, 1 row affected (0.18 sec)
सेलेक्ट स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें:
mysql> select * from DemoTable792;
यह निम्नलिखिक आउटपुट देगा:
+--------+---------+ | Name | Subject | +--------+---------+ | Chris | MySQL | | David | MySQL | | Robert | MongoDB | | Carol | MongoDB | +--------+---------+ 4 rows in set (0.00 sec)
टेबल में मानों को फेरबदल करने की क्वेरी
mysql> select * from DemoTable792 order by rand();
यह निम्नलिखिक आउटपुट देगा (हर बार अलग क्रम):
+--------+---------+ | Name | Subject | +--------+---------+ | Chris | MySQL | | Robert | MongoDB | | David | MySQL | | Carol | MongoDB | +--------+---------+ 4 rows in set (0.00 sec)
व्याख्या
RAND()प्रत्येक पंक्ति के लिए 0 से 1 के बीच एक यादृच्छिक फ्लोटिंग-पॉइंट मान उत्पन्न करता हैORDER BY RAND()पंक्तियों को यादृच्छिक क्रम में सॉर्ट करता है- हर बार क्वेरी चलाने पर क्रम अलग होता है
- बड़े टेबल पर प्रदर्शन प्रभाव पड़ सकता है (फुल टेबल स्कैन और सॉर्ट)
उपयोग के मामले
- यादृच्छिक नमूना लेना (सैंपलिंग)
- क्विज़/परीक्षा में प्रश्नों को फेरबदल करना
- विज्ञापन या सामग्री को रैंडमली प्रदर्शित करना
- बड़े टेबल के लिए:
WHERE RAND() < 0.01(1% नमूना) अधिक कुशल है