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

MySQL中如何从JSON类型字段提取所有name与value值?

解决MySQL JSON字段提取属性的问题

你的attributes字段是嵌套JSON结构,根节点以UUID作为键,name和value都嵌套在这些子对象里,所以直接用attributes->'$.name'会返回NULL——因为根节点根本没有name这个键。

需求1:提取所有唯一的name值

使用JSON_TABLE(MySQL 8.0及以上版本支持)将JSON对象展开为行记录,再通过DISTINCT去重:

SELECT DISTINCT jt.name
FROM products,
     JSON_TABLE(
         JSON_QUERY(attributes, '$'),
         '$.*' COLUMNS(
             name VARCHAR(255) PATH '$.name'
         )
     ) AS jt;

需求2:提取所有的name和value值

同样用JSON_TABLE展开结构,同时提取name和value:

SELECT 
    products.id, -- 可带上商品主键关联到具体商品
    jt.name,
    jt.value
FROM products,
     JSON_TABLE(
         JSON_QUERY(attributes, '$'),
         '$.*' COLUMNS(
             name VARCHAR(255) PATH '$.name',
             value VARCHAR(255) PATH '$.value'
         )
     ) AS jt;

如果不需要关联商品信息,简化为:

SELECT jt.name, jt.value
FROM products,
     JSON_TABLE(
         JSON_QUERY(attributes, '$'),
         '$.*' COLUMNS(
             name VARCHAR(255) PATH '$.name',
             value VARCHAR(255) PATH '$.value'
         )
     ) AS jt;

内容的提问来源于stack exchange,提问作者user367970

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:30:35