JSON 使用 JSON_TABLE 将嵌套关联数组提取到 MySQL 8 中的行

问题描述 投票:0回答:0

我在 mysql 表中的 json 列中设置了我的数据,该列具有嵌套行,每个子数组都有唯一键。我正在使用 MySQL 8 并尝试使用 json_table 函数但没有成功。

这是我的表的示例结构和数据:

CREATE TABLE tb(json_col JSON);

INSERT INTO tb VALUES (
    '{ "actors": {
        "101": { "name":"Arnold",  "address":"780 Mission St, San Francisco, CA 94103"},
        "102": { "name":"Sylvester",  "address":"75 37th Ave S, St Cloud, MN 94103"}, 
        "103": { "name":"Al Pacino",  "address":"1262 Roosevelt Trail, Raymond, ME 04071"}
    }
    }'
);

如果您注意到,我有那些键(101、102、103 ...)在我使用 json_table 时给我带来了问题。如果我有一个没有这些键的结构,我可以将值放入行中,但是如果这些键介于两者之间,我将无法前进。

我要传递的查询是:

SELECT actors.* 
FROM tb, 
     JSON_TABLE(json_col, '$.actors.*' COLUMNS (
                name VARCHAR(40)  PATH '$.*.name',
                address VARCHAR(100) PATH '$.*.address')
     ) actors;

对此的回应是“返回 0 行”。

我的目标是通过这种方式获取数据:

| name      | address                                 |
|-----------|-----------------------------------------|
| Arnold    | 780 Mission St, San Francisco, CA 94103 |
| Sylvester | 75 37th Ave S, St Cloud, MN 94103       |
| Al Pacino | 1262 Roosevelt Trail, Raymond, ME 04071 |

请帮助我朝着正确的方向前进。谢谢

mysql json jsonpath json-path-expression
© www.soinside.com 2019 - 2024. All rights reserved.