- 有时候对数据需要合并,并且以json格式输出,所以想到了使用聚合函数 group_concat,具体代码如下:
SELECT
shop_shopname,
shop_mobile,
CONCAT(
'[',
GROUP_CONCAT(
'{order_no:"',
order_no,
'",pay_money:"',
pay_money,
'"}'
),
']'
) AS order_list
FROM
`order`
GROUP BY
shop_id
-- 查询order表,并且根据shop_id对数据进行合并,合并后的字段设置为json格式,字段名为order_list
运行结果
运行结果.png
使用json_object优化
- mysql5.7以后的版本新增了对json的支持,可以快捷的操作json数据,直接执行以下查询就行了
SELECT
shop_shopname,
shop_mobile,
concat('[',
GROUP_CONCAT(
JSON_OBJECT(
'order_no',
order_no,
'pay_money',
pay_money
)
)
,']' ) AS order_list
FROM
`order`
GROUP BY
shop_id
运行结果
运行结果2.png
- 和自己拼接json字符串的区别是,这样的来的json字符串更加严格,并且出bug的概率更小,自己拼接的json串容易漏掉符号,导致格式错误
网友评论