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

MySQL में एक विशिष्ट पंक्ति और एक रैंडम पंक्ति कैसे चुनें?


ORDER BY और RAND() से विशिष्ट + रैंडम चयन

MySQL में एक विशिष्ट पंक्ति को प्राथमिकता देकर और बाकी रैंडम चुनने के लिए ORDER BY (condition) DESC, RAND() का उपयोग करें।

उदाहरण

टेबल बनाएं:

mysql> CREATE TABLE oneSpecificRowAndOtherRandom (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(20)
    -> );

7 नाम इन्सर्ट करें:

mysql> INSERT INTO oneSpecificRowAndOtherRandom(Name) 
VALUES('Larry'), ('Sam'), ('Mike'), ('Carol'), ('Chris'), ('Bob'), ('David');

सभी रिकॉर्ड:

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Larry |
| 2  | Sam   |
| 3  | Mike  |
| 4  | Carol |
| 5  | Chris |
| 6  | Bob   |
| 7  | David |
+----+-------+

Id=5 (Chris) को पहले, फिर 2 रैंडम चुनें

mysql> SELECT * FROM oneSpecificRowAndOtherRandom
    -> ORDER BY (Id = 5) DESC, RAND()
    -> LIMIT 0, 3;

परिणाम (पहली बार):

+----+-------+
| Id | Name  |
+----+-------+
| 5  | Chris |
| 1  | Larry |
| 2  | Sam   |
+----+-------+

दूसरी बार चलाने पर (RAND() बदलता है):

+----+-------+
| Id | Name  |
+----+-------+
| 5  | Chris |
| 2  | Sam   |
| 4  | Carol |
+----+-------+

कैसे काम करता है:

  • (Id = 5) - बूलियन एक्सप्रेशन, Id=5 के लिए TRUE (1), अन्य के लिए FALSE (0)
  • DESC - TRUE (1) को पहले रखता है, इसलिए Chris सबसे ऊपर
  • RAND() - बाकी पंक्तियों को रैंडम क्रम में व्यवस्थित करता है
  • LIMIT 0, 3 - पहली 3 पंक्तियाँ लेता है (1 विशिष्ट + 2 रैंडम)

विस्तार: एकाधिक विशिष्ट पंक्तियाँ

ORDER BY (Id IN (5, 2)) DESC, RAND()  -- Id 5 और 2 पहले, फिर रैंडम

प्रदर्शन चेतावनी: ORDER BY RAND() बड़ी टेबल पर धीमा होता है (फुल टेबल स्कैन + फाइलसॉर्ट)। बड़ी टेबल के लिए अन्य रैंडम सैंपलिंग तकनीक उपयोग करें।

  1. - MySQL में पंक्तियों को एक बैच में एक समय पर चुनना

    LIMIT और OFFSET से पेजिनेशन/बैच प्रोसेसिंग LIMIT offset, count या LIMIT count OFFSET offset का उपयोग करके परिणाम सेट को बैच में विभाजित करें। तालिका और डेटा (David), (Robert), (Adam), (John), (Jace); क्वेरी: 5वीं से 8वीं पंक्ति (बैच आकार 4, ऑफसेट 4) SELECT * FROM DemoTable1514 LIMIT 4 OFFSET 4;

  1. - MySQL क्वेरी: अधिकतम और न्यूनतम वेतन वाली पंक्ति चुनें

    MySQL में अधिकतम और न्यूनतम वेतन वाली पंक्तियों को एक साथ चुनने के लिए, सबक्वेरी के साथ MIN(), MAX() और UNION ALL का उपयोग करें। टेबल बनाएं: mysql> create table DemoTable ( -> EmployeeName VARCHAR(20), -> EmployeeSalary INT -> ); Query OK, 0 rows affected (0.70 sec) रि

  1. - MySQL में UPDATE WHERE से विशिष्ट पंक्ति और कॉलम मान अपडेट करें

    MySQL में UPDATE स्टेटमेंट और WHERE क्लॉज का उपयोग करके विशिष्ट पंक्ति के विशिष्ट कॉलम का मान बदल सकते हैं। सिंटैक्स UPDATE टेबल_नाम SET कॉलम_नाम = नया_मान WHERE शर्त; उदाहरण: StudentId अपडेट करें जहां StudentName = Carol Taylor 1. टेबल बनाएं ); 2. डेटा डालें INSERT INTO DemoTable1569 VALUES(D