ROW_NUMBER() विंडो फंक्शन के साथ रो इंडेक्स जनरेट करना
MySQL 8.0+ में रो इंडेक्स या रैंक जनरेट करने के लिए ROW_NUMBER() विंडो फंक्शन का उपयोग करें। आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Name VARCHAR(40)
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('Chris');
mysql> INSERT INTO DemoTable VALUES ('Chris');
mysql> INSERT INTO DemoTable VALUES ('Chris');
mysql> INSERT INTO DemoTable VALUES ('Robert');
mysql> INSERT INTO DemoTable VALUES ('Robert');
mysql> INSERT INTO DemoTable VALUES ('Adam');
mysql> INSERT INTO DemoTable VALUES ('Adam');
mysql> INSERT INTO DemoTable VALUES ('Adam');
mysql> INSERT INTO DemoTable VALUES ('Adam');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+--------+ | Name | +--------+ | Chris | | Chris | | Chris | | Robert | | Robert | | Adam | | Adam | | Adam | | Adam | +--------+
डुप्लिकेट नामों के लिए रैंक सेट करने के लिए क्वेरी:
mysql> SELECT Name, ROW_NUMBER() OVER (PARTITION BY Name) AS `Rank`
FROM DemoTable;
आउटपुट:
+--------+------+ | Name | Rank | +--------+------+ | Adam | 1 | | Adam | 2 | | Adam | 3 | | Adam | 4 | | Chris | 1 | | Chris | 2 | | Chris | 3 | | Robert | 1 | | Robert | 2 | +--------+------+
व्याख्या:
- PARTITION BY Name: परिणाम सेट को नाम के आधार पर पार्टीशन (समूहों) में विभाजित करता है
- ROW_NUMBER(): प्रत्येक पार्टीशन के भीतर क्रमिक संख्या (1 से शुरू) असाइन करता है
- डिफ़ॉल्ट रूप से, प्रत्येक पार्टीशन के भीतर पंक्तियों का क्रम अनिर्दिष्ट होता है (आमतौर पर इन्सर्शन ऑर्डर)
नोट: ROW_NUMBER() MySQL 8.0 और बाद के संस्करणों में उपलब्ध है। पुराने संस्करणों के लिए, आपको यूजर-डिफाइंड वेरिएबल्स का उपयोग करना होगा।