我具有具有以下数据结构的表:
name | age | date | value
---------------------------------
John | 20 | 2020-01-01 | 5
Peter| 21 | 2020-01-02 | 6.5
John | 26 | 2019-02-26 | 1.8
John | 20 | 2029-10-13 | 0.7
Peter| 47 | 2020-01-18 | 11.3
Peter| 21 | 2020-02-01 | 41.7
John | 20 | 2020-01-22 | 4
我只希望通过Mysql 5.5.5存储的Proc(没有json聚合函数)来获得如下结果:
{
"John (20)" : {
["2020-01-01", 5],
["2029-10-13", 0.7],
["2029-10-13", 4]
},
"John (26)" : {
["2019-02-26", 1.8]
},
"Peter (21)" : {
["2020-01-02", 6.5],
["2020-02-01", 41.7],
},
"Peter (47)" : {
["2020-01-18", 11.3]
}
}
而且不知道如何制作。仅获取平面json。...
select concat('[', group_concat(
'{"name":"',`name`,'",',
'"age":"',`age`,'",',
'"date":"',`date`,'",',
'"value":',`value`, '}' separator ','), ']') from `data`
一个选项:
SELECT
CONCAT(
'{',
GROUP_CONCAT(
CONCAT(
`der`.`name_age`,
': {',
`der`.`date_value`,
'}'
)
SEPARATOR ', '),
'}'
) `json_result`
FROM (
SELECT
CONCAT(
'"',
`name`,
' (', `age`, ')"'
) `name_age`,
GROUP_CONCAT(
CONCAT(
'["',
`date`,
'", ',
`value`,
']'
)
SEPARATOR ', ') `date_value`
FROM
`data`
GROUP BY
`name`, `age`
) `der`;
请参见dbfiddle。