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

MySQL में रैंडम वैल्यू कॉलम बनाकर रैंडम ऑर्डर कैसे करें?


RAND() से डायनामिक रैंडम कॉलम और सॉर्टिंग

MySQL में रैंडम ऑर्डरिंग के लिए एक वर्चुअल रैंडम कॉलम बनाएं और उसके अनुसार सॉर्ट करें।

उदाहरण

टेबल बनाएं:

mysql> CREATE TABLE DemoTable (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(20)
    -> );

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable(StudentName) VALUES('Larry'), ('Sam'), ('Mike'), ('Carol'), ('Robert'), ('Chris');

मूल क्रम:

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Larry       |
| 2         | Sam         |
| 3         | Mike        |
| 4         | Carol       |
| 5         | Robert      |
| 6         | Chris       |
+-----------+-------------+

रैंडम कॉलम बनाकर सॉर्ट करने की क्वेरी

mysql> SELECT * FROM (
    ->     SELECT StudentName, RAND() + 1 AS RandomRecord FROM DemoTable
    -> ) AS tbl
    -> ORDER BY RandomRecord DESC;

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

+-------------+--------------------+
| StudentName | RandomRecord       |
+-------------+--------------------+
| Carol       | 1.8973721451101566 |
| Chris       | 1.7821308670399065 |
| Mike        | 1.4640037673190271 |
| Larry       | 1.4134691557041081 |
| Sam         | 1.1408822407395414 |
| Robert      | 1.0948494543273461 |
+-------------+--------------------+

व्याख्या:

  • RAND() + 1 - 1.0 से 2.0 के बीच रैंडम फ्लोट उत्पन्न करता है
  • सबक्वेरी tbl में यह नया कॉलम RandomRecord के रूप में जुड़ जाता है
  • बाहरी क्वेरी इस नए कॉलम के अनुसार DESC (उच्च से निम्न) सॉर्ट करती है

सरल विकल्प

-- 1. प्राइमरी की रेंज में रैंडम
SELECT * FROM table WHERE id >= (SELECT FLOOR(RAND() * (MAX(id) - MIN(id) + 1)) + MIN(id)) LIMIT 10;

-- 2. OFFSET आधारित (कुल पंक्तियाँ ज्ञात हों)
SELECT * FROM table LIMIT 10 OFFSET FLOOR(RAND() * (total_rows - 10));
  1. - MySQL में सेसन वेरिएबल से कॉलम मान को पिछले मान के साथ जोड़ना

    सेसन वेरिएबल का उपयोग करके रनिंग टोटल MySQL में एक कॉलम के मान को पिछली पंक्ति के मान के साथ जोड़कर (रनिंग टोटल/क्यूमुलेटिव सम) बनाने के लिए यूजर-डिफाइंड वेरिएबल (@var) का उपयोग करें। उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना mysql> CREATE TABLE DemoTable809(Price INT); Query OK, 0 rows affected (

  1. - MySQL SET क्लॉज के साथ कॉलम मान 'ADD' को बढ़ाएं

    चूंकि कॉलम मान ADD पहले से एक आरक्षित शब्द है, इसलिए आपको ADD शब्द के चारों ओर बैकटिक्स का उपयोग करना होगा जैसे `ADD`। आइए एक उदाहरण देखते हैं और एक टेबल बनाते हैं: mysql> create table DemoTable779 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, `ADD` int ); Query OK, 0 rows affected (0.47 sec)

  1. - MySQL में IP एड्रेस रिकॉर्ड्स के अनुसार कॉलम को ऑर्डर करें

    MySQL में IP एड्रेस को सही क्रम में सॉर्ट करने के लिए, INET_ATON() फंक्शन का उपयोग करें। यह फंक्शन IP एड्रेस को संख्यात्मक मान में बदल देता है, जिससे सही संख्यात्मक क्रम में सॉर्टिंग संभव होती है। टेबल बनाएं: mysql> create table DemoTable ( -> IpAddress VARCHAR(50) -> ); Query