সাবকোয়েরি + GROUP_CONCAT দিয়ে ID অনুযায়ী স্বতর্ক নাম একত্রিত করা
MySQL-এ GROUP_CONCAT() ডুপ্লিকেট মানও যোগ করে। ID অনুযায়ী গ্রুপ করে স্বতর্ক (distinct) নামগুলো কমা-সেপারেটেড দেখাতে সাবকোয়েরিতে DISTINCT ব্যবহার করা হয়।
টেবিল ও ডেটা (ডুপ্লিকেটসহ)
mysql> CREATE TABLE DemoTable (Id INT, Name VARCHAR(100)); mysql> INSERT INTO DemoTable VALUES(100,'Chris'), (200,'Robert'), (100,'Chris'), (300,'David'), (400,'Mike'), (400,'Mike');
সব রেকর্ড
+------+--------+ | Id | Name | +------+--------+ | 100 | Chris | | 200 | Robert | | 100 | Chris | | 300 | David | | 400 | Mike | | 400 | Mike | +------+--------+
GROUP_CONCAT DISTINCT (সাবকোয়েরি)
mysql> SELECT GROUP_CONCAT(Name) FROM (
SELECT DISTINCT Id, Name FROM DemoTable
) tbl;
+-------------------------+ | GROUP_CONCAT(Name) | +-------------------------+ | Chris,Robert,David,Mike | +-------------------------+
ব্যাখ্যা
- সাবকোয়েরি:
SELECT DISTINCT Id, Name FROM DemoTable— (Id, Name) জোড়ার ভিত্তিতে ডুপ্লিকেট সরায়। - বাহ্যিক
GROUP_CONCAT(Name)— স্বতর্ক নামগুলো কমা দিয়ে এক লাইনে জোড়া দেয়। - MySQL-এ
GROUP_CONCAT(DISTINCT Name)সরাসরি কাজ করে না গ্রুপ বাই ছাড়া (এখানে গ্রুপ বাই নেই, পুরো টেবিল এক গ্রুপ)।
ID অনুযায়ী গ্রুপ করে দেখাতে (প্রতি ID-র জন্য)
SELECT Id, GROUP_CONCAT(DISTINCT Name) FROM DemoTable GROUP BY Id;
+------+-------------------------+ | Id | GROUP_CONCAT(DISTINCT Name) | +------+-------------------------+ | 100 | Chris | | 200 | Robert | | 300 | David | | 400 | Mike | +------+-------------------------+