mysql - 如何使用 group-concat mysql 创建 json 格式?

标签 mysql sql group-concat

如何用group-concat mysql创建json格式?

(我使用 MySQL)

示例 1:

表1:

email            |    name  |   phone
-------------------------------------
my1@gmail.com    | Ben      | 6555333
my2@gmail.com    | Tom      | 2322452
my2@gmail.com    | Dan      | 8768768
my1@gmail.com    | Joi      | 3434356

类似于不给我格式的语法代码:

select email, group-concat(name,phone) as list from table1 
group by email

我需要的输出:

email         |    list
------------------------------------------------
my1@gmail.com |  {name:"Ben",phone:"6555333"},{name:"Joi",phone:"3434356"}
my2@gmail.com |  {name:"Tom",phone:"2322452"},{name:"Dan",phone:"8768768"}

谢谢

最佳答案

使用较新版本的 MySQL,您可以使用 JSON_OBJECT 函数来实现所需的结果,如下所示:

GROUP_CONCAT(
  JSON_OBJECT(
    'name', name,
    'phone', phone
  )
) AS list

要准备好将 SQL 响应解析为数组:

CONCAT(
  '[',
  GROUP_CONCAT(
    JSON_OBJECT(
      'name', name,
      'phone', phone
    )
  ),
  ']'
) AS list

这会给你一个类似的字符串:[{name: 'ABC', phone: '111'}, {name: 'DEF', phone: '222'}] 可以是JSON 已解析。希望这会有所帮助。

关于mysql - 如何使用 group-concat mysql 创建 json 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12511933/

相关文章:

mysql - 如何从 select() 交叉引用表

sql - 同时更新父子表

mysql - SQL IF 语句错误

mysql - GROUP_CONCAT ORDER BY

php - 修改从mysql中选择数据

PHP mysql - ...和列 ='anything' ...?

mysql - 从同一张表中选择分组依据

mysql - "out of range"是什么意思?

php - 通过用户名而不是 ID 建立关系

mysql - 计算具有相同相关记录集的行数