Как получить значение из JSON документа внутри MySQL столбца? - PullRequest
1 голос
/ 08 апреля 2020

Я написал следующий MySQL Json Запрос массива. Версия Mysql: 8.0.18-commercial

select r.network, s.server
    from table1 e
    inner join table2 s
        on e.objectId  = s.envId
    inner join resources r
        on e.objectId  = r.envId    
    inner join tpgs g
        on e.accountId  = g.objectId      
    inner join msgTable a
        on a.id  = (select max(a.id) from msgTable a where a.logId = s.AuditId)  
    ORDER BY dateSubmitted DESC ;

Выход имеет 2 столбца network и server

network                      server
---                          ---
[                           "Linux123"        
{
    "key" : "Key123",
    "name" : "RedHat 7"
}
]    

[                            "Linux234"        
{
    "key" : "Key234",
    "name" : "RedHat 8"
}
]   

Я хочу изменить запрос JOIN и только получить network.name из таблицы:

networkName                  server
---                          ---
RedHat 7                        "Linux123"        

RedHat 8                        "Linux234"

Я написал следующее JOIN, но он дает null для networkName

select r.network->>"$.name"  as networkName, s.server
    from table1 e
    inner join table2 s
        on e.objectId  = s.envId
    inner join resources r
        on e.objectId  = r.envId    
    inner join tpgs g
        on e.accountId  = g.objectId      
    inner join msgTable a
        on a.id  = (select max(a.id) from msgTable a where a.logId = s.AuditId)  
    ORDER BY dateSubmitted DESC ;

1 Ответ

1 голос
/ 08 апреля 2020

Кажется, что network - это массив, который всегда содержит один объект, а вы обращаетесь к нему как к объекту.

Если это так, вам просто нужно изменить это:

r.network->>"$.name" 

Кому:

r.network->>"$[0].name" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...