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

游戏服务器JSON库存字段提取重复数据集查询问题求助

解决JSON库存字段提取展开问题

问题根源

你的items字段应该是JSON数组格式(比如存储的是[{"name":"物品A","amount":2},{"name":"物品B","amount":5}]这类多元素数组),而非单个JSON对象。直接用json_extract取$.amount/$.name找不到对应路径,因此返回Null。

解决方案(MySQL 8.0+适用)

使用JSON_TABLE函数将JSON数组转换为关系型表格,展开每个物品的name和amount:

SELECT 
    jt.name,
    jt.amount
FROM trunkitems
JOIN JSON_TABLE(
    trunkitems.items,
    '$[*]' COLUMNS(
        name VARCHAR(255) PATH '$.name',
        amount INT PATH '$.amount'
    )
) AS jt
WHERE trunkitems.plate = '6DV689SW';
  • $[*]表示遍历JSON数组中的每一个元素
  • COLUMNS块定义要提取的字段、对应数据类型和JSON路径

其他数据库适配(以PostgreSQL为例)

如果使用PostgreSQL,可通过jsonb_array_elements展开数组:

SELECT 
    (item->>'name') AS name,
    (item->>'amount')::INT AS amount
FROM trunkitems,
     jsonb_array_elements(items::jsonb) AS item
WHERE plate = '6DV689SW';

补充说明

你原SQL里的$."amount"可简化为$.amount,无需转义引号,但这不是返回Null的核心原因——核心是没有处理JSON数组的遍历展开逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:45:37