Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL RAND() फंक्शन से ORDER BY और LIMIT के साथ हर बार अलग रैंडम पंक्तियाँ प्राप्त करें

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;
  1. - MySQL टेबल से 3 रैंडम मान कैसे प्रदर्शित करें

    रैंडम के लिए RAND() का उपयोग करें, जबकि मानों की संख्या के लिए LIMIT 3 यानी यहां 3: select yourColumnName from yourTableName order by rand() limit 3; पहले एक टेबल बनाते हैं: mysql> create table DemoTable646 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,FirstName varchar(100) ); Query OK, 0 rows af

  1. - MySQL में कॉमा-सेपरेटेड मानों वाली टेबल के भीतर खोज कैसे करें

    कॉमा-सेपरेटेड मानों वाली टेबल के भीतर खोज करने के लिए LIKE ऑपरेटर का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable675(Value text); Query OK, 0 rows affected (0.55 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable675 values(10,56,49484

  1. - MySQL में ऑटो-इन्क्रीमेंट मान को 1 से शुरू करने के लिए कैसे सेट करें

    TRUNCATE TABLE के साथ ऑटो-इन्क्रीमेंट रीसेट करना टेबल को ट्रंकेट करके ऑटो-इन्क्रीमेंट मान को 1 से पुनः आरंभ करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY ); रिकॉर्ड्स इन्सर्ट करें: mysql> INSERT INTO DemoTable VALUES ();