You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MySQL 8的JSON_TABLE动态提取JSON根键及嵌套值

解决方案:MySQL 8 提取动态JSON根键及嵌套值

针对示例JSON的直接查询

使用$.*作为JSON_TABLE的遍历路径,配合$."$key"获取根键名,$.A提取嵌套值:

SELECT
  json_key,
  a_value
FROM
  JSON_TABLE(
    '{"Foo": {"A": 3}, "Bar": {"A": 1, "B": 368}, "Biz": {"C": 2, "D": 10}}',
    '$.*' COLUMNS(
      json_key VARCHAR(255) PATH '$."$key"',
      a_value INTEGER PATH '$.A'
    )
  ) AS jt;

当JSON存储在数据库表中时

假设表名为json_data,JSON字段名为content,使用交叉连接关联JSON_TABLE:

SELECT
  jt.json_key,
  jt.a_value
FROM
  json_data,
  JSON_TABLE(
    json_data.content,
    '$.*' COLUMNS(
      json_key VARCHAR(255) PATH '$."$key"',
      a_value INTEGER PATH '$.A'
    )
  ) AS jt;

关键说明

  • 原SQL错误原因:使用$作为JSON_TABLE的路径仅会生成一行数据,无法遍历所有根级元素;改用$.*可遍历每个根键对应的嵌套对象,每行对应一个根键。
  • $."$key"是MySQL 8.0.14及以上版本支持的语法,用于获取当前遍历的JSON对象的键名。
  • $.A直接从嵌套对象中提取"A"的值,若该键不存在则自动返回NULL,符合需求。

内容的提问来源于stack exchange,提问作者J-Deq87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 02:16:00