Como listar todos os elementos de matriz JSON separadamente dentro MySQL Query?

meallhour:

Eu escrevi seguinte MySQLconsulta 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 networke serverde tipo JSON

network              server
---                  ---
[                    [
    "Linux123",          "Server123",
    "RHEL",              "Server1231",
    "abc.com"            "Server1232"
]                    ]

Eu quero modificar a SELECTconsulta 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_TABLEpara extrair os diferentes servervalores de servers, em seguida, CROSS JOINque o networksvalor 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

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=387958&siteId=1
Recomendado
Clasificación