【发布时间】:2021-02-09 12:22:35
【问题描述】:
我有一个带有 JSON 字段的下表架构,
CREATE TABLE `test` (
`stats` json NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
我已插入以下内容,
INSERT INTO test VALUES('[{"days": 15, "percentage": 50},{"days": 5, "percentage": 100}]');
我现在想做的是遍历它并返回给定日期的百分比,或者只单独显示每个密钥对值。我该怎么办?
我从here 中找到了以下查询,我试图让它为我的目的工作,但输出不符合预期。理想情况下,我想在这样的查询中执行此操作,而不使用存储过程或其他任何东西,
select stats, i, concat('stats', element) from `test`, json_table(stats, '$[*]' columns (i for ordinality, element varchar(100) path '$')) jt;
因此,如果将 15 作为日期,则输出将为 50。
day percentage
15 50
或者在不过滤特定日期的情况下进行迭代时会出现以下结果
day percentage
15 50
5 100
这是我尝试的fiddle
在我的情况下,这些键是唯一的。
【问题讨论】: