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

จะสร้างรูปแบบ JSON ด้วย group-concat ใน MySQL ได้อย่างไร?


คุณสามารถสร้างรูปแบบ JSON โดยใช้ฟังก์ชัน group_concat() จาก MySQL ไวยากรณ์มีดังนี้ −

SELECT yourColumnName1, GROUP_CONCAT(CONCAT('{anytName:"', yourColumnName, '",anyName:"',yourColunName,'"}')) anyVariableName จาก yourTableNamegroup โดย yourColumnName1;

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตารางก่อน แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง JsonFormatDemo -> ( -> UserId int, -> UserName varchar(100), -> UserEmail varchar(100) -> );Query OK, 0 แถวได้รับผลกระทบ (0.99 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามที่จะแทรกบันทึกมีดังนี้ -

mysql> แทรกลงในค่า JsonFormatDemo (101,'John','[email protected]'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า JsonFormatDemo (101, 'Bob', 'John @gmail.com');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า JsonFormatDemo (102,'Carol','[email protected]'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า JsonFormatDemo (103,'Sam','[email protected]');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.15 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก JsonFormatDemo;

ผลลัพธ์

<ก่อนหน้า>+---------+----------+----------------+| รหัสผู้ใช้ | ชื่อผู้ใช้ | UserEmail |+---------+----------+-----------------+| 101 | จอห์น | [email protected] || 101 | บ๊อบ | [email protected] || 102 | แครอล | [email protected] || 103 | แซม | [email protected] |+---------+----------+-----------------+4 แถวในชุด ( 0.00 วินาที)

แบบสอบถามเพื่อสร้างรูปแบบ JSON ด้วยความช่วยเหลือของฟังก์ชัน group_concat() -

mysql> เลือก UserId, -> GROUP_CONCAT(CONCAT('{Name:"', UserName, '", Email:"',UserEmail,'"}')) JsonFormat -> จาก JsonFormatDemo -> กลุ่มตาม UserId; 

ผลลัพธ์

<ก่อนหน้า>+---------+----------------------------- ---------------------------------------- +| รหัสผู้ใช้ | JsonFormat |+----------------------+-------------------------------------- ------------------------------------+| 101 | {ชื่อ:"John" อีเมล:"[email protected]"},{ชื่อ:"Bob" อีเมล:"[email protected]"} || 102 | {ชื่อ:"แครอล" อีเมล:"[email protected]"} || 103 | {ชื่อ:"แซม" อีเมล:"[email protected]"} |+-------+---------------------- -------------------------------------------------- ----+3 แถวในชุด (0.00 วินาที)