meallhour:
Eu escrevi seguinte MySQL
consulta matriz JSON. A versão do MySQL é8.0.18-commercial
select
networkInfo->>"$.*" as network,
servers->>"$[*]" as server
from table1
where id = 56;
A saída tem 2 colunas network
e server
de tipo JSON
network server
--- ---
[ [
"Linux123", "Server123",
"RHEL", "Server1231",
"abc.com" "Server1232"
] ]
Eu quero modificar a SELECT
consulta de modo que a saída tem uma linha separada para cada server
:
network server
--- ----
[ Server123
"Linux123",
"RHEL",
"abc.com"
]
[ Server1231
"Linux123",
"RHEL",
"abc.com"
]
[ Server1232
"Linux123",
"RHEL",
"abc.com"
]
Usuario :
Você pode usar JSON_TABLE
para extrair os diferentes server
valores de servers
, em seguida, CROSS JOIN
que o networks
valor para o dado id
:
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
Saída (eu tive que cortar uma demonstração com base em uma expectativa de estrutura de tabela):
network server
["abc.com", "Linux123", "RHEL"] Server123
["abc.com", "Linux123", "RHEL"] Server1231
["abc.com", "Linux123", "RHEL"] Server1232