[英]Create json table from nested json object
我在表mytable
json_s
字段中有一个 json 结构,如下所示(这是一行的示例,会有很多相似的行)
{
"100": {
"1": [[2,3],2] ,
"4": [[10], 0]
},
"102": {
"7":[[5,6],5]
}
}
我想将其转换为json_table
以在不同的查询中进一步使用。 json表结构应该是这样的
field_a | field_b | field_c |
100 | 1 | 2 |
100 | 1 | 3 |
100 | 4 | 10 |
102 | 7 | 5 |
102 | 7 | 6 |
我试图从像其他许多问题的解决方案本,但没有成功为止。 一个主要问题是我想在 json 列中分配未知的键,并且结构嵌套在两个级别。
编辑:字段映射的结构将是这样的
{ "field_a" : {
"field_b" : [ ["field_c1", "field_c2",... ] , x]
}}
意思是忽略x
元素
SELECT jt1.field_a,
jt2.field_b,
jt3.field_c
FROM t1
CROSS JOIN JSON_TABLE(JSON_KEYS(t1.data),
'$[*]' COLUMNS (field_a VARCHAR(255) PATH '$')) jt1
CROSS JOIN JSON_TABLE(JSON_KEYS(JSON_EXTRACT(t1.data, CONCAT('$."', jt1.field_a, '"'))),
'$[*]' COLUMNS (field_b VARCHAR(255) PATH '$')) jt2
CROSS JOIN JSON_TABLE(JSON_EXTRACT(t1.data, CONCAT('$."', jt1.field_a, '"."', jt2.field_b, '"')),
'$[0][*]' COLUMNS (field_c VARCHAR(255) PATH '$')) jt3
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=479b21bf8f8d46ede2a0e262618df62e
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.