সারণি তৈরি ও ডেটা ইনসার্ট
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');
mysql> insert into DemoTable1627 values('John','Doe');
mysql> insert into DemoTable1627 values('Adam','Smith');
mysql> insert into DemoTable1627 values('Carol','Taylor');
ডেটা দেখানো
mysql> select * from DemoTable1627;
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | John | Smith | | John | Doe | | Adam | Smith | | Carol | Taylor | +-----------+----------+
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 | +----------+----------------+
ব্যাখ্যা
- @p — পिछলা LastName সংরক্ষণ করে
- @j — কাউন্টার ভেরিয়েবল
- IF(@p = LastName, @j+1, ...) — একই LastName থাকলে কাউন্ট বাড়ায়, নয় তবে রিসেট করে
- CONCAT() — নম্বর এবং নাম জড়িয়ে দেয়
- GROUP_CONCAT() — গোষ্ঠীভিত্তিক স্ট্রিং তৈরি করে
এই টেকনিক র্যাঙ্কিং বা সিরিয়াল নম্বর যুক্ত রিপোর্ট তৈরি করতে কাজে লাগে।