遍历json数组mysql 8



我有以下带有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}]');

我现在想做的是遍历此并返回给定日期的百分比,或者只是单独显示每个密钥对值。我该怎么做呢?

我从这里找到了以下查询,我试图使它为我的目的工作,但输出不像预期的那样。理想情况下,我希望在这样的查询中做到这一点,而不使用存储过程或其他任何东西,

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 

这是我尝试的小提琴

在我的例子中,键是唯一的。

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;

小提琴

最新更新