কম্পিউটার টিউটোরিয়াল

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');
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() — গোষ্ঠীভিত্তিক স্ট্রিং তৈরি করে

এই টেকনিক র‍্যাঙ্কিং বা সিরিয়াল নম্বর যুক্ত রিপোর্ট তৈরি করতে কাজে লাগে।

  1. MySQL স্টোরড প্রোসিডিউরে DELETE কোয়েরি বাস্তবায়ন করা

  2. MySQL-এ ORDER BY FIELD() ব্যবহার করে কাস্টম সর্ট অর্ডার বাস্তবায়ন

  3. MySQL-এ হারমোনিক মিন এবং কোড্রেটিক মিন বের করা

  4. MySQL에서 DOUBLE 타입 길이와 소수점 자릿수 지정하기