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

MySQL में ग्रुप करके रैंडम ऑर्डर में डेटा कैसे प्राप्त करें?

MySQL में ग्रुपिंग के साथ रैंडम ऑर्डरिंग

MySQL में जब आप किसी कॉलम के आधार पर ग्रुप बनाते हैं और फिर उन ग्रुप्स को रैंडम ऑर्डर में दिखाना चाहते हैं, तो इसके लिए एक सबक्वेरी के साथ RAND() फंक्शन का उपयोग किया जाता है।

उदाहरण के लिए टेबल बनाना

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value CHAR(1)
);

सैंपल डेटा इन्सर्ट करना

INSERT INTO DemoTable(Value) VALUES('X');
INSERT INTO DemoTable(Value) VALUES('Y');
INSERT INTO DemoTable(Value) VALUES('X');
INSERT INTO DemoTable(Value) VALUES('X');
INSERT INTO DemoTable(Value) VALUES('Y');
INSERT INTO DemoTable(Value) VALUES('Z');
INSERT INTO DemoTable(Value) VALUES('Z');

मौजूदा डेटा देखना

SELECT * FROM DemoTable;

आउटपुट:

+----+-------+
| Id | Value |
+----+-------+
| 1  | X     |
| 2  | Y     |
| 3  | X     |
| 4  | X     |
| 5  | Y     |
| 6  | Z     |
| 7  | Z     |
+----+-------+

केस 1: ग्रुप करके रैंडम ऑर्डर में क्वेरी

SELECT DemoTable.* 
FROM DemoTable 
JOIN (
    SELECT Value, RAND() AS `random_Value`
    FROM DemoTable
    GROUP BY Value
) tbl2 ON DemoTable.Value = tbl2.Value
ORDER BY tbl2.`random_Value`;

संभावित आउटपुट (हर बार अलग होगा):

+----+-------+
| Id | Value |
+----+-------+
| 6  | Z     |
| 7  | Z     |
| 1  | X     |
| 3  | X     |
| 4  | X     |
| 2  | Y     |
| 5  | Y     |
+----+-------+

केस 2: वही क्वेरी फिर से चलाने पर अलग रिजल्ट

चूंकि RAND() हर बार नया रैंडम मान देता है, इसलिए ग्रुप्स का क्रम हर बार बदल जाएगा:

+----+-------+
| Id | Value |
+----+-------+
| 2  | Y     |
| 5  | Y     |
| 6  | Z     |
| 7  | Z     |
| 1  | X     |
| 3  | X     |
| 4  | X     |
+----+-------+

व्याख्या

  • सबक्वेरी हर यूनिक Value के लिए एक रैंडम नंबर जनरेट करती है
  • मुख्य क्वेरी इस रैंडम नंबर के आधार पर ऑर्डर करती है
  • ग्रुप के अंदर के रिकॉर्ड्स अपने मूल क्रम में रहते हैं

नोट: बड़े डेटासेट के लिए यह तरीका धीमा हो सकता है। बेहतर परफॉरमेंस के लिए इंडेक्सिंग पर विचार करें।

  1. - MySQL में SELECT 1 का उपयोग करके मान मौजूद है या नहीं कैसे चेक करें

    EXISTS पैटर्न के रूप में SELECT 1 का उपयोग मान मौजूद है या नहीं जांचने के लिए SELECT 1 पैटर्न का उपयोग करें। यह पूर्ण पंक्ति लौटाने से अधिक कुशल है। सिंटैक्स: SELECT 1 FROM yourTableName WHERE yourColumnName = yourValue; यदि उपरोक्त 1 लौटाता है, तो मान डेटाबेस में मौजूद है। आइए पहले एक टेबल बनाते है

  1. - MySQL में GROUP BY में MIN/MAX सबक्वेरी से समूह प्रतिनिधि पंक्ति चुनें

    MySQL में GROUP BY के साथ प्रत्येक समूह से एक विशिष्ट पंक्ति (जैसे न्यूनतम ID वाली) चुनने के लिए सबक्वेरी में MIN() या MAX() का उपयोग करें। उदाहरण: प्रत्येक अंक समूह से न्यूनतम StudentId वाली पंक्ति 1. टेबल बनाएं ); 2. डेटा डालें INSERT INTO DemoTable1572 VALUES(4, 79, Bob); -- समान अंक 79 3.

  1. - MySQL में विशेष वर्ण वाले मान को खोजकर NULL से कैसे बदलें?

    MySQL में किसी विशिष्ट मान (जिसमें विशेष वर्ण शामिल हों) को खोजकर उसे NULL से बदलने के लिए, साधारण UPDATE स्टेटमेंट के साथ WHERE क्लॉज़ का उपयोग करें। विशेष वर्णों के लिए स्ट्रिंग लिटरल में उचित एस्केपिंग या कोटिंग आवश्यक है। उदाहरण: अंडरस्कोर वाले कोड को NULL करना डेमो टेबल बनाएं: mysql> CREA