我写了下面的MySQL Json数组查询。Mysql版本为8.0.18-commercial
select
networkInfo->>"$.*" as network,
servers->>"$[*]" as server
from table1
where id = 56;输出有两列JSON类型的network和server
network server
--- ---
[ [
"Linux123", "Server123",
"RHEL", "Server1231",
"abc.com" "Server1232"
] ]我想修改SELECT查询,以便每个server都有一个单独的输出行
network server
--- ----
[ Server123
"Linux123",
"RHEL",
"abc.com"
]
[ Server1231
"Linux123",
"RHEL",
"abc.com"
]
[ Server1232
"Linux123",
"RHEL",
"abc.com"
]发布于 2020-03-31 09:04:12
您可以使用JSON_TABLE从servers中提取不同的server值,然后将其CROSS JOIN为给定id的networks值
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 ):
network server
["abc.com", "Linux123", "RHEL"] Server123
["abc.com", "Linux123", "RHEL"] Server1231
["abc.com", "Linux123", "RHEL"] Server1232https://stackoverflow.com/questions/60941766
复制相似问题