我有一个带有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
在我的例子中,密钥将是唯一的。
发布于 2021-02-09 20:58:12
SELECT stats, i, days, percentage
FROM test,
JSON_TABLE(stats,
'$[*]' COLUMNS (i FOR ORDINALITY,
days VARCHAR(100) PATH '$.days',
percentage VARCHAR(100) PATH '$.percentage')) jt;https://stackoverflow.com/questions/66118915
复制相似问题