ในการต่อสตริงใน MySQL กับ GROUP BY คุณต้องใช้ GROUP_CONCAT() กับพารามิเตอร์ SEPARATOR ซึ่งอาจเป็นเครื่องหมายจุลภาค (') หรือช่องว่าง (' ') เป็นต้น
ไวยากรณ์มีดังนี้:
เลือก yourColumnName1,GROUP_CONCAT(yourColumnName2 SEPARATOR 'yourValue') เป็น anyVariableName จาก yourTableName GROUP BY yourColumnName1;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> สร้างตาราง GroupConcatenateDemo -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0 แถวได้รับผลกระทบ (0.99 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามที่จะแทรกบันทึกมีดังนี้:
mysql> แทรกลงในค่า GroupConcatenateDemo (10,'Larry'); Query OK, 1 แถวได้รับผลกระทบ (0.41 วินาที)mysql> แทรกลงในค่า GroupConcatenateDemo (11,'Mike'); Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที )mysql> แทรกลงในค่า GroupConcatenateDemo (12, 'John'); แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า GroupConcatenateDemo (10,'Elon'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.63 วินาที) mysql> แทรกลงในค่า GroupConcatenateDemo (10,'Bob');Query OK, 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า GroupConcatenateDemo (11,'Sam'); Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:
mysql> เลือก *จาก GroupConcatenateDemo;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+------+-------+| รหัส | ชื่อ |+------+-------+| 10 | แลร์รี่ || 11 | ไมค์ || 12 | จอห์น || 10 | อีลอน || 10 | บ๊อบ || 11 | แซม |+------+-------+6 แถวในชุด (0.00 วินาที)นี่คือแบบสอบถามที่ใช้ GROUP BY เพื่อเชื่อมสตริงใน MySQL ดำเนินการ GROUP BY บนพื้นฐานของ Id และต่อสตริงโดยใช้ฟังก์ชัน GROUP_CONCAT() ใน MySQL
แบบสอบถามมีดังนี้:
mysql> เลือก Id,group_concat(Name SEPARATOR ',') เป็น GroupConcatDemo จาก GroupConcatenateDemo -> จัดกลุ่มตาม Id;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+------+-----------------+| รหัส | GroupConcatDemo |+------+----------------+| 10 | แลร์รี่,อีลอน,บ๊อบ || 11 | ไมค์,แซม || 12 | John |+------+-----------------+3 แถวในชุด (0.00 วินาที)