MySQL JSON-按JSON数组索引分组

时间:2018-12-23 19:56:02

标签: mysql json

我正在尝试使用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 的索引对它进行分组?

谢谢!

1 个答案:

答案 0 :(得分:3)

一个选项是JSON_TABLEJSON_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