Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ต่อคอลัมน์ด้วย GROUP_CONCAT และเพิ่มคำนำหน้า MR. ใน MySQL

บทความนี้สาธิตการใช้ CONCAT() เพิ่มคำนำหน้า "MR." ให้ทุกชื่อ แล้วใช้ GROUP_CONCAT() รวมชื่อในกลุ่มเดียวกัน (Group by UserId) เป็นสตริงเดียว คั่นด้วยจุลภาค

สร้างตารางและข้อมูลทดสอบ

mysql> CREATE TABLE DemoTable799(
    UserId INT,
    UserName VARCHAR(100),
    UserAge INT
);
Query OK, 0 rows affected (0.56 sec)

mysql> INSERT INTO DemoTable799 VALUES(101, 'John', 21);
mysql> INSERT INTO DemoTable799 VALUES(102, 'Chris', 26);
mysql> INSERT INTO DemoTable799 VALUES(101, 'Robert', 23);
mysql> INSERT INTO DemoTable799 VALUES(103, 'David', 24);
mysql> INSERT INTO DemoTable799 VALUES(101, 'Mike', 29);

คิวรี GROUP_CONCAT พร้อม CONCAT คำนำหน้า

mysql> SELECT UserId, GROUP_CONCAT(CONCAT('MR.', UserName)) 
FROM DemoTable799 
GROUP BY UserId;

ผลลัพธ์

+--------+---------------------------------------+
| UserId | GROUP_CONCAT(CONCAT('MR.', UserName)) |
+--------+---------------------------------------+
| 101    | MR.John,MR.Robert,MR.Mike             |
| 102    | MR.Chris                              |
| 103    | MR.David                              |
+--------+---------------------------------------+

คำอธิบาย:

  • CONCAT('MR.', UserName) - เพิ่ม "MR." นำหน้าชื่อแต่ละคน
  • GROUP_CONCAT(...) - รวมค่าที่ผ่าน CONCAT แล้ว ในแต่ละกลุ่ม UserId
  • Default Separator คือ จุลภาค (,) สามารถเปลี่ยนได้ด้วย SEPARATOR ' / '
  • GROUP_CONCAT_MAX_LEN (Default 1024) จำกัดความยาวผลลัพธ์ อาจต้องเพิ่มสำหรับข้อมูลเยอะ