เมื่อต้องการรวมชื่อ (FirstName) และนามสกุล (LastName) เป็นข้อความเดียว และแสดงเฉพาะคู่ที่ไม่ซ้ำกัน (Distinct) สามารถใช้ GROUP BY ร่วมกับ CONCAT()
ตัวอย่างการสร้างตารางพร้อมดัชนี
mysql> create table DemoTable (
FirstName varchar(100),
LastName varchar(100) );
Query OK, 0 rows affected (0.92 sec)
mysql> alter table DemoTable add index(FirstName,LastName);
Query OK, 0 rows affected (1.00 sec)
เพิ่มข้อมูล (มีคู่ซ้ำ)
mysql> insert into DemoTable values('Adam','Smith');
Query OK, 1 row affected (0.73 sec)
mysql> insert into DemoTable values('Adam','Smith');
Query OK, 1 row affected (1.17 sec)
mysql> insert into DemoTable values('John','Doe');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('Carol','Taylor');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values('John','Doe');
Query OK, 1 row affected (0.66 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | Adam | Smith | | Adam | Smith | | Carol | Taylor | | John | Doe | | John | Doe | +-----------+----------+ 5 rows in set (0.00 sec)
คำสั่งรวมชื่อ-นามสกุลและกลุ่มเพื่อเอาค่าที่ไม่ซ้ำ
mysql> select concat(FirstName, ' ', LastName) as combinedName from DemoTable group by LastName, FirstName;
ผลลัพธ์
+--------------+ | combinedName | +--------------+ | Adam Smith | | Carol Taylor | | John Doe | +--------------+ 3 rows in set (0.00 sec)
คำอธิบาย: GROUP BY LastName, FirstName จะรวมแถวที่มีชื่อและนามสกุลเหมือนกันเป็นกลุ่มเดียว แล้ว CONCAT() จะต่อสตริงเข้าด้วยกัน วิธีนี้เหมือน SELECT DISTINCT CONCAT(...) แต่ใน MySQL บางเวอร์ชัน GROUP BY อาจเร็วกว่า