首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL查询中分别列出每个JSON数组元素?

问如何在MySQL查询中分别列出每个JSON数组元素?
EN

Stack Overflow用户
提问于 2020-03-31 08:49:10
回答 1查看 42关注 0票数 0

我写了下面的MySQL Json数组查询。Mysql版本为8.0.18-commercial

代码语言:javascript
复制
select 
networkInfo->>"$.*" as network,
servers->>"$[*]" as server
from table1
where id = 56;

输出有两列JSON类型的network和server

代码语言:javascript
复制
network              server
---                  ---
[                    [
    "Linux123",          "Server123",
    "RHEL",              "Server1231",
    "abc.com"            "Server1232"
]                    ]

我想修改SELECT查询,以便每个server都有一个单独的输出行

代码语言:javascript
复制
network                      server
---                          ----  
[                             Server123
    "Linux123",
    "RHEL",
    "abc.com"
]

[                             Server1231
    "Linux123",
    "RHEL",
    "abc.com"
]

[                             Server1232
    "Linux123",
    "RHEL",
    "abc.com"
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-31 09:04:12

您可以使用JSON_TABLE从servers中提取不同的server值,然后将其CROSS JOIN为给定id的networks值

代码语言:javascript
复制
SELECT t1.networkInfo->>"$.*" AS network, j.server
FROM table1 t1
CROSS JOIN JSON_TABLE(t1.servers, 
                      "$[*]" COLUMNS (
                        server VARCHAR(20) PATH '$'
                        )
                      ) j
WHERE t1.id = 56

输出(我不得不根据对表结构的期望来修改demo ):

代码语言:javascript
复制
network                             server
["abc.com", "Linux123", "RHEL"]     Server123
["abc.com", "Linux123", "RHEL"]     Server1231
["abc.com", "Linux123", "RHEL"]     Server1232
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60941766

复制
相关文章

相似问题

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