首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历json数组mysql 8

遍历json数组mysql 8
EN

Stack Overflow用户
提问于 2021-02-09 20:22:36
回答 1查看 54关注 0票数 0

我有一个带有JSON字段的下列表模式,

代码语言:javascript
复制
CREATE TABLE `test` (
      `stats` json NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

我插入了以下内容:

代码语言:javascript
复制
INSERT INTO test VALUES('[{"days": 15, "percentage": 50},{"days": 5, "percentage": 100}]');

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

我找到了来自here的以下查询,并尝试使其按我的目的工作,但输出并不像预期的那样。理想情况下,我希望在这样的查询中这样做,而不使用存储过程或其他任何东西,

代码语言:javascript
复制
select stats, i, concat('stats', element) from `test`, json_table(stats, '$[*]' columns (i for ordinality, element varchar(100) path '$')) jt;

因此,如果给定15作为一天,则输出将是50。

代码语言:javascript
复制
   day percentage
    15  50

或者在不过滤特定日期的情况下进行迭代时会出现以下结果

代码语言:javascript
复制
   day percentage
    15  50
    5   100 

这是我尝试的fiddle

在我的例子中,密钥将是唯一的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 20:58:12

代码语言:javascript
复制
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;

fiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66118915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档