JSON_TABLE() 路径表达式:将嵌套数组转为关系表
深入讲解JSON_TABLE函数中的NESTED PATH与ORDINALITY,处理多层JSON数组到规范化行集的转换。 · 难度:入门 · +10XP
JSON_TABLE 多层路径展开
MySQL的JSON_TABLE()不只能解析单层数组,通过NESTED PATH可展开嵌套的JSON结构,且ORDINALITY能为每行生成序号。这在处理来自API的复杂JSON日志、订单明细(订单头+多行商品+多行配件)时非常关键。掌握PATH模式与列映射能避免手动解析JSON碎片。
-- 解析订单JSON:包含商品数组,每个商品又含配件数组
SELECT jt.*
FROM JSON_TABLE(
'{ "order_id": 1001, "items": [ { "sku": "A1", "parts": [{"pn":"P1"},{"pn":"P2"}] } ] }',
'$' COLUMNS (
order_id INT PATH '$.order_id',
NESTED PATH '$.items[*]' COLUMNS (
sku VARCHAR(10) PATH '$.sku',
NESTED PATH '$.parts[*]' COLUMNS (
part_no VARCHAR(10) PATH '$.pn'
)
)
)
) AS jt;