MySQL में GROUP_CONCAT के साथ पंक्ति संख्या जोड़ना
पहले एक टेबल बनाते हैं:
mysql> create table DemoTable1627 ( FirstName varchar(20), LastName varchar(20) ); Query OK, 0 rows affected (0.59 sec)
कुछ रिकॉर्ड डालें:
mysql> insert into DemoTable1627 values('John','Smith'); Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1627 values('John','Doe'); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1627 values('Adam','Smith'); Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1627 values('Carol','Taylor'); Query OK, 1 row affected (0.08 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable1627;
आउटपुट:
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | John | Smith | | John | Doe | | Adam | Smith | | Carol | Taylor | +-----------+----------+ 4 rows in set (0.00 sec)
GROUP_CONCAT में नंबरिंग लागू करने की क्वेरी:
mysql> select LastName, group_concat( concat(@j := if (@p = LastName, @j + 1, if(@p := LastName,1,1)), '.', FirstName) separator ', ') FirstName from DemoTable1627 group by LastName;
परिणाम:
+----------+----------------+ | LastName | FirstName | +----------+----------------+ | Doe | 1.John | | Smith | 1.John, 2.Adam | | Taylor | 1.Carol | +----------+----------------+ 3 rows in set (0.09 sec)
व्याख्या: यूजर-डिफाइंड वेरिएबल @j और @p का उपयोग करके प्रत्येक LastName ग्रुप के भीतर क्रमिक संख्या उत्पन्न की जाती है। जब LastName बदलता है, तो काउंटर रीसेट हो जाता है। CONCAT संख्या और पहला नाम जोड़ता है, और GROUP_CONCAT उन्हें अल्पविराम से अलग करता है।