MySQL: डुप्लिकेट नाम वाले रिकॉर्ड से रैंडम पंक्ति चुनना
जब किसी नाम की कई पंक्तियां हों और उनमें से एक रैंडम पंक्ति चाहिए, तो WHERE Name = 'value' के साथ ORDER BY RAND() LIMIT 1 का उपयोग करें।
उदाहरण: 'Bob' नाम की रैंडम पंक्ति
टेबल बनाएं:
CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20)
);
INSERT INTO DemoTable (Name) VALUES ('Chris'), ('Bob'), ('David'), ('Bob'), ('Bob');
डेटा (Bob की 3 पंक्तियां):
+----+-------+ | Id | Name | +----+-------+ | 1 | Chris | | 2 | Bob | | 3 | David | | 4 | Bob | | 5 | Bob | +----+-------+
रैंडम Bob पंक्ति प्राप्त करें
SELECT * FROM DemoTable WHERE Name = 'Bob' ORDER BY RAND() LIMIT 1;
संभावित परिणाम:
+----+------+ | Id | Name | +----+------+ | 5 | Bob | +----+------+
व्याख्या
WHERE Name = 'Bob'— केवल Bob वाली पंक्तियां (Id 2, 4, 5)ORDER BY RAND()— इन 3 पंक्तियों को रैंडम क्रम में व्यवस्थितLIMIT 1— उनमें से एक चुनता है
प्रदर्शन के लिए बेहतर: रैंडम ऑफसेट
यदि डुप्लिकेट बहुत अधिक हैं:
उपयोग केस
- A/B टेस्टिंग: एक वेरिएंट रैंडमली चुनें
- फीचर्ड कंटेंट: समान श्रेणी से एक आइटम दिखाएं
- लोड बैलेंसिंग: समान सर्वर में से एक चुनें