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

MySQL: รวมค่า LastName ด้วย GROUP_CONCAT และจำกัดเงื่อนไข

การใช้ GROUP_CONCAT()

ฟังก์ชัน GROUP_CONCAT() รวมค่าจากหลายแถวเป็นสตริงเดียว คั่นด้วยเครื่องหมาย (Default คือ คอมมา)

ตัวอย่าง

mysql> create table DemoTable813(
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserFirstName varchar(100),
    UserLastName varchar(100) );
Query OK, 0 rows affected (0.49 sec)
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Adam','Smith');
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Chris','Brown');
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('David','Miller');
mysql> insert into DemoTable813(UserFirstName,UserLastName) values('Carol','Taylor');

รวม LastName เฉพาะ UserId < 4

mysql> select group_concat(UserLastName) from DemoTable813 where UserId < 4;

ผลลัพธ์:

+----------------------------+
| group_concat(UserLastName) |
+----------------------------+
| Smith,Brown,Miller         |
+----------------------------+

ตัวเลือกเพิ่มเติม

-- เปลี่ยนตัวคั่น
SELECT GROUP_CONCAT(UserLastName SEPARATOR ' | ') FROM DemoTable813;

-- เรียงลำดับก่อนรวม
SELECT GROUP_CONCAT(UserLastName ORDER BY UserLastName) FROM DemoTable813;

-- จำกัดจำนวน
SELECT GROUP_CONCAT(UserLastName LIMIT 2) FROM DemoTable813;

ค่า Default และการตั้งค่า

  • ค่าความยาวสูงสุด Default: 1024 ตัวอักษร (ควบคุมด้วย group_concat_max_len)
  • คืนค่า NULL ถ้าไม่มีแถวตรงเงื่อนไข
  • ใช้ร่วมกับ GROUP BY เพื่อรวมตามกลุ่ม

สรุป

GROUP_CONCAT() เหมาะสำหรับสร้างรายการค่ารวม เช่น แท็ก, หมวดหมู่, อีเมลผู้รับ ใช้ SEPARATOR, ORDER BY, LIMIT ควบคุมรูปแบบผลลัพธ์