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

วิธีใช้ GROUP BY เพื่อเชื่อมสตริงใน MySQL และวิธีตั้งค่าตัวคั่นสำหรับการต่อข้อมูล


ในการต่อสตริงใน 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 วินาที)