ใช้ GROUP_CONCAT(), COUNT() และ GROUP BY เพื่อรวมรายการ ID และนับจำนวนของแต่ละกลุ่ม
mysql> CREATE TABLE DemoTable (
-> CompanyId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CompanyName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.62 sec)
mysql> INSERT INTO DemoTable(CompanyName) VALUES('Amazon');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable(CompanyName) VALUES('Google');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable(CompanyName) VALUES('Google');
Query OK, 1 row affected (0.07 sec)
mysql> INSERT INTO DemoTable(CompanyName) VALUES('Microsoft');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable(CompanyName) VALUES('Amazon');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable(CompanyName) VALUES('Amazon');
Query OK, 1 row affected (0.07 sec)
mysql> SELECT * FROM DemoTable;
+-----------+-------------+ | CompanyId | CompanyName | +-----------+-------------+ | 1 | Amazon | | 2 | Google | | 3 | Google | | 4 | Microsoft | | 5 | Amazon | | 6 | Amazon | +-----------+-------------+ 6 rows in set (0.00 sec)
จัดกลุ่มและนับพร้อมรวม ID:
mysql> SELECT CompanyName, GROUP_CONCAT(CompanyId), COUNT(CompanyId) AS count
-> FROM DemoTable
-> GROUP BY CompanyName
-> HAVING count > 1;
+-------------+-------------------------+-------+ | CompanyName | GROUP_CONCAT(CompanyId) | count | +-------------+-------------------------+-------+ | Amazon | 1,5,6 | 3 | | Google | 2,3 | 2 | +-------------+-------------------------+-------+ 2 rows in set (0.00 sec)
ประโยชน์: ดูสรุปและรายละเอียดพร้อมกัน เช่น รายการออเดอร์ต่อลูกค้า, Log การเข้าถึงต่อผู้ใช้