mysql查询问题,数组处理

img

*如何处理成以下格式?skuid和sale的内容是一对一匹配的,现在需要以skuid作为单一分组,并匹配出对应的sale数量、创建时间和订单编号

img

写个存储过程,将skuid和sale的中括号以及引号去掉,剩余部分按逗号分割,将分割后的值,与时间和订单编号一起插入目标表中。
或者应用程序做上述分割后直接展示。

1、如果是 MySQL 8,可以使用 json_table 函数实现:

WITH t AS (
    SELECT 1 id, 'aa' nam, CAST( '[{"x":12, "y":"18"}, {"x":"13", "y":"17"}, {"x":"14", "y":16}]' AS json ) val UNION ALL
    SELECT 2 id, 'bb' nam, CAST( '[{"x":22, "y":"28"}, {"x":"23", "y":"27"}, {"x":"24", "y":26}]' AS json ) val )
SELECT * FROM t, JSON_TABLE( t.val, "$[*]" COLUMNS( xval varchar( 10 ) PATH "$.x", yval varchar( 10 ) PATH "$.y" ) ) tt;

输出结果:

img