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

MySQL-এ CASE WHEN এবং GROUP_CONCAT ব্যবহার করে শর্তসাপেক্ষে কলাম মান কনক্যাটেনেট করা


টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> create table DemoTable1869 ( Id int, Subject varchar(20), Name varchar(20) ); Query OK, 0 rows affected (0.00 sec)
mysql> insert into DemoTable1869 values(100,'MySQL','John'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1869 values(100,'MongoDB','Smith'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1869 values(101,'MySQL','Chris'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1869 values(101,'MongoDB','Brown'); Query OK, 1 row affected (0.00 sec)

সব রেকর্ড

mysql> select * from DemoTable1869;
+------+---------+-------+
| Id   | Subject | Name  |
+------+---------+-------+
|  100 | MySQL   | John  |
|  100 | MongoDB | Smith |
|  101 | MySQL   | Chris |
|  101 | MongoDB | Brown |
+------+---------+-------+
4 rows in set (0.00 sec)

প্রতি Id-এর জন্য MySQL এবং MongoDB-এর Name কনক্যাটেনেট করা

সাবকুয়েরি দিয়ে কন্ডিশনাল এগরিগেশন (MAX + CASE WHEN) করে ফার্স্টনেম এবং লাস্টনেম বের করা, তারপর CONCAT:

mysql> select Id, concat(StudentFirstName,'',StudentLastName) from ( select Id, max(case when Subject='MySQL' then Name end) as StudentFirstName, max(case when Subject='MongoDB' then Name end) as StudentLastName from DemoTable1869 group by Id ) tbl;
+------+---------------------------------------------+
| Id   | concat(StudentFirstName,'',StudentLastName) |
+------+---------------------------------------------+
|  100 | JohnSmith                                   |
|  101 | ChrisBrown                                  |
+------+---------------------------------------------+
2 rows in set (0.00 sec)

ব্যাখ্যা: CASE WHEN Subject='MySQL' THEN Name END শুধু MySQL সারিগুলোর নাম ফেরত দেয়, বাকিগুলো NULL। MAX() NULL বাদ দিয়ে নন-নাল মান নেয়। এটি পিভট টেবিল (pivot) তৈরির একটি টেকনিক।

  1. MySQL-এ কলামের সব মান থেকে শেষ ৩ ডিজিটের যোগফল বের করা

  2. MySQL-এ শর্তভিত্তিক গণনা (Conditional Count) করে আলাদা কলামে দেখানো

  3. MySQL CONCAT()으로 여러 컬럼 값을 텍스트와 합쳐 단일 컬럼으로 출력하기

  4. MySQL에서 CASE WHEN으로 동일 컬럼의 두 가지 다른 합계 구하기