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

รวมข้อมูลหลายแถวเป็นแถวเดียวใน MySQL ด้วย GROUP_CONCAT

ฟังก์ชัน GROUP_CONCAT() ใน MySQL รวมค่าจากหลายแถวเป็นสตริงเดียว คั่นด้วยตัวคั่นที่กำหนด (Default คือจุลภาค) เหมาะสำหรับสร้างรายการ, Path, หรือ CSV

ตัวอย่างการใช้งาน

สร้างตารางเก็บส่วนของ Path:

mysql> create table DemoTable1355 (Location text);
mysql> insert into DemoTable1355 values('E:'),('AllPrograms'),('ChatApplicationInJava'),('MainFolder');

ข้อมูลต้นฉบับ (4 แถว):

+-----------------------+
| Location              |
+-----------------------+
| E:                    |
| AllPrograms           |
| ChatApplicationInJava |
| MainFolder            |
+-----------------------+

คำสั่งรวมเป็น Path เดียว คั่นด้วย /

mysql> select group_concat(Location separator '/') from DemoTable1355;

ผลลัพธ์ (1 แถว)

+-------------------------------------------------+
| group_concat(Location separator '/')            |
+-------------------------------------------------+
| E:/AllPrograms/ChatApplicationInJava/MainFolder |
+-------------------------------------------------+

คำอธิบายเพิ่มเติม:

  • SEPARATOR '/' กำหนดตัวคั่น (Default คือ ',')
  • ORDER BY ภายใน: GROUP_CONCAT(col ORDER BY col SEPARATOR ',')
  • DISTINCT ภายใน: GROUP_CONCAT(DISTINCT col ...) ลบค่าซ้ำ
  • ข้อจำกัด: ความยาวสูงสุดควบคุมโดย group_concat_max_len (Default 1024 bytes) ต้องเพิ่มหากข้อมูลยาว
  • MySQL 8.0+ มี JSON_ARRAYAGG() สำหรับสร้าง JSON Array แทน