按json数组索引分组

mmvthczy  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(385)

我尝试使用mysql8json类型字段来计算按父索引分组的嵌套json数组元素的数量。我的json字符串看起来像

  1. {
  2. "a": [
  3. {
  4. "b": [
  5. 1,
  6. 2,
  7. 3
  8. ]
  9. },
  10. {
  11. "b": [
  12. 1
  13. ]
  14. }
  15. ]
  16. }

我试图得到每个“a”元素在“b”键下的元素数。我需要一个类似的输出:

  1. {0: 3, 1: 1}

意思是a[0]在“b”下有3个元素,而a[1]有1个元素。
此查询统计所有“a”中“b”元素的总数(结果为4): select JSON_LENGTH(json->>'$.a[*].b[*]') from myTable 有没有可能用a的索引对它进行分组?
谢谢您!

jtoj6r0c

jtoj6r0c1#

一个选项是json_table和json_objectagg:

  1. SELECT
  2. JSON_OBJECTAGG(
  3. `rowid` - 1,
  4. JSON_LENGTH(`count`)
  5. )
  6. FROM JSON_TABLE(
  7. '{"a":[{"b":[1,2,3]},{"b":[1]}]}',
  8. '$.a[*]'
  9. COLUMNS(
  10. `rowid` FOR ORDINALITY,
  11. `count` JSON PATH '$.b'
  12. )
  13. ) `der`;

见db小提琴。

相关问题