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

MySQL में क्वेरी परिणामों को रैंडम क्रम में ऑर्डर करना और रैंडम पंक्तियां चुनना

परिचय

MySQL में ORDER BY RAND() का उपयोग करके क्वेरी परिणामों को यादृच्छिक (रैंडम) क्रम में क्रमबद्ध किया जा सकता है। LIMIT के साथ संयोजित करके रैंडम नमूना (random sample) प्राप्त किया जा सकता है।

सिंटैक्स

SELECT * FROM table_name
WHERE column_name IN (value1, value2, ...)
ORDER BY RAND()
LIMIT limit_value;

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable1559 (
    -> EmployeeId INT,
    -> EmployeeName VARCHAR(20),
    -> EmployeeAge INT
    -> );
Query OK, 0 rows affected (1.22 sec)
mysql> INSERT INTO DemoTable1559 VALUES(101, 'Bob', 28);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable1559 VALUES(102, 'Robert', 26);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable1559 VALUES(103, 'Sam', 25);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable1559 VALUES(104, 'Mike', 29);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable1559 VALUES(105, 'John', 34);
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable1559 VALUES(106, 'Carol', 31);
Query OK, 1 row affected (0.19 sec)

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable1559;

आउटपुट:

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| 101        | Bob          | 28          |
| 102        | Robert       | 26          |
| 103        | Sam          | 25          |
| 104        | Mike         | 29          |
| 105        | John         | 34          |
| 106        | Carol        | 31          |
+------------+--------------+-------------+
6 rows in set (0.00 sec)

रैंडम क्रम में 3 पंक्तियां चुनने की क्वेरी

mysql> SELECT * FROM DemoTable1559
    -> WHERE EmployeeId IN (101, 103, 106)
    -> ORDER BY RAND() LIMIT 3;

परिणाम (उदाहरण - हर बार अलग होगा)

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| 101        | Bob          | 28          |
| 103        | Sam          | 25          |
| 106        | Carol        | 31          |
+------------+--------------+-------------+
3 rows in set (0.00 sec)

महत्वपूर्ण विचार

  • प्रदर्शन: ORDER BY RAND() बड़े टेबल पर धीमा होता है (फुल टेबल स्कैन + फाइलसॉर्ट)
  • बड़े टेबल के लिए विकल्प:
    • ऑफसेट-आधारित: LIMIT 1 OFFSET FLOOR(RAND() * (SELECT COUNT(*) FROM table))
    • यादृच्छिक ID रेंज: WHERE id >= (SELECT FLOOR(RAND() * (MAX(id) - MIN(id) + 1)) + MIN(id)) ORDER BY id LIMIT 1
  • RAND() प्रत्येक पंक्ति के लिए एक यादृच्छिक फ्लोट (0-1) उत्पन्न करता है
  • निर्धारित परिणाम के लिए: ORDER BY RAND(12345) (सीड मान)

उपयोग के मामले

  • फीचर्ड कंटेंट रोटेशन
  • A/B टेस्टिंग के लिए रैंडम नमूना
  • क्विज़/परीक्षा में प्रश्न क्रम यादृच्छिक करना

छोटे-मध्यम टेबल के लिए ORDER BY RAND() सरल और प्रभावी है।

  1. - MySQL में रिकर्सिव SELECT क्वेरी कैसे करें

    रिकर्सिव सेलेक्ट के लिए, आइए एक उदाहरण देखते हैं। सबसे पहले, हम एक टेबल बनाएंगे। टेबल बनाने के लिए CREATE कमांड का उपयोग किया जाता है। ); Query OK, 0 rows affected (0.61 sec) अब, हम टेबल tblSelectDemo में रिकॉर्ड्स डालेंगे। insert into tblSelectDemo values(5,Bob); Query OK, 1 row affected (0.18

  1. MySQL से अंतिम 10 रो कैसे चुनें? MySQL से अंतिम 10 रो कैसे चुनें?

    MySQL से अंतिम 10 रो चुनने के लिए, हम SELECT स्टेटमेंट और LIMIT कॉन्सेप्ट के साथ सबक्वेरी का उपयोग कर सकते हैं। निम्न एक उदाहरण है। टेबल बनाना। mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) टेबल में रिकॉर

  1. - MySQL में शर्त के साथ ORDER BY और SELECT कैसे करें?

    कंडीशनल ORDER BY: जीरो वैल्यू अंत में किसी कॉलम को सॉर्ट करते समय खास मान (जैसे 0) को अंत में रखने और बाकी को नॉर्मल ऑर्डर में रखने के लिए बूलियन एक्सप्रेशन का उपयोग करें। सिंटैक्स SELECT * FROM yourTableName ORDER BY yourColumnName = 0, yourColumnName; टेबल बनाना और डेटा इन्सर्ट करना CREATE TABL