MySQL में ORDER BY RAND() और LIMIT का उपयोग करके टेबल से निश्चित संख्या में रैंडम रिकॉर्ड चुनें।
सिंटैक्स
SELECT * FROM yourTableName ORDER BY RAND() LIMIT numberOfRecords;
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> LastName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.51 sec)
mysql> INSERT INTO DemoTable VALUES('Brown'), ('Smith'), ('Taylor'), ('Miller'), ('Johnson');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+----------+ | LastName | +----------+ | Brown | | Smith | | Taylor | | Miller | | Johnson | +----------+ 5 rows in set (0.00 sec)
4 रैंडम रिकॉर्ड चुनना
mysql> SELECT * FROM DemoTable ORDER BY RAND() LIMIT 4;
आउटपुट (उदाहरण - हर बार अलग होगा)
+----------+ | LastName | +----------+ | Brown | | Miller | | Johnson | | Taylor | +----------+ 4 rows in set (0.03 sec)
प्रदर्शन चेतावनी:
ORDER BY RAND()बड़ी टेबल पर धीमा होता है (पूर्ण टेबल स्कैन + फाइलसॉर्ट)- बड़ी टेबल के लिए बेहतर दृष्टिकोण:
- कुल पंक्तियों की गिनती करें, रैंडम ऑफसेट जनरेट करें,
LIMIT 1 OFFSET randomउपयोग करें - या प्राइमरी की रेंज में रैंडम ID जनरेट करें:
WHERE id >= (SELECT FLOOR(RAND() * (MAX(id) - MIN(id) + 1)) + MIN(id)) LIMIT n
- कुल पंक्तियों की गिनती करें, रैंडम ऑफसेट जनरेट करें,
MySQL 8.0+: TABLESAMPLE SYSTEM (10) (सांख्यिकीय नमूनाकरण) का उपयोग कर सकते हैं, लेकिन सटीक पंक्ति संख्या की गारंटी नहीं देता।