微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JSON_TABLE的参数不正确

如何解决JSON_TABLE的参数不正确

我的一张表中连续有json数据。现在,我想以编程方式将数据选择到表中。现在,只有提供原始的json数据,我才能实现它。

我现在不知道的是:

SELECT
    attribute_name,attribute_value 
FROM
    JSON_TABLE ( '[json data should be fetched here from a table by using select]','$[*]' COLUMNS ( attribute_name VARCHAR ( 255 ) PATH '$.attribute_name',attribute_value VARCHAR ( 255 ) PATH '$.attribute_value' ) ) AS attributes_table

获取数据的查询是:

SELECT
    attributes 
FROM
    tbl_items_pricing_attributes 
WHERE
    tbl_items_pricing_attributes.branch_id = '1001' 
    AND tbl_items_pricing_attributes.sku_code = '1000010003'

查询结果为:

[{"attribute_name":"size","attribute_value":"large","buy_price":500.0,"sell_price":700.0,"price_is_taxable":true},{"attribute_name":"size","attribute_value":"medium","buy_price":400.0,"sell_price":600.0,"attribute_value":"small","buy_price":300.0,"sell_price":500.0,"price_is_taxable":true}]

解决方法

您需要 join 使用设置返回功能json_table()选择json数组的查询:

SELECT jt.attribute_name,jt.attribute_value
FROM tbl_items_pricing_attributes pa
CROSS JOIN JSON_TABLE (
    pa.attributes,'$[*]' COLUMNS (attribute_name VARCHAR(255) PATH '$.attribute_name',attribute_value VARCHAR(255) PATH '$.attribute_value') 
) jt
WHERE pa.branch_id = '1001' AND pa.sku_code = '1000010003'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。