我正在尝试使用MySQL 8 JSON类型字段对按父索引分组的嵌套JSON数组元素的数量进行计数。我的JSON字符串看起来像
{
"a": [
{
"b": [
1,
2,
3
]
},
{
"b": [
1
]
}
]
}
我正在尝试获取每个“ a”元素在“ b”键下的元素数。我需要类似以下内容的输出:
{0: 3, 1: 1}
意思是a [0]在“ b”下有3个元素,而a [1]有1。
此查询统计所有“ a”中“ b”元素的总数(产量4):
select JSON_LENGTH(json->>'$.a[*].b[*]') from myTable
是否可以通过 a 的索引对它进行分组?
谢谢!
答案 0 :(得分:3)
一个选项是JSON_TABLE和JSON_OBJECTAGG:
SELECT
JSON_OBJECTAGG(
`rowid` - 1,
JSON_LENGTH(`count`)
)
FROM JSON_TABLE(
'{"a":[{"b":[1,2,3]},{"b":[1]}]}',
'$.a[*]'
COLUMNS(
`rowid` FOR ORDINALITY,
`count` JSON PATH '$.b'
)
) `der`;
请参见db-fiddle。