【问题标题】:How to fetch value from JSON document inside MySQL column?如何从 MySQL 列中的 JSON 文档中获取值?
【发布时间】:2020-04-08 16:15:29
【问题描述】:

我写了以下MySQL Json Array 查询。 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 列 networkserver

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 ;

【问题讨论】:

    标签: mysql sql arrays json join


    【解决方案1】:

    似乎network 是一个始终包含单个对象的数组,而您将其作为对象进行寻址。

    如果是这样,你只需要改变这个:

    r.network->>"$.name" 
    

    收件人:

    r.network->>"$[0].name" 
    

    【讨论】:

      猜你喜欢
      • 2020-11-10
      • 1970-01-01
      • 2016-10-15
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 2014-11-15
      • 2018-11-18
      相关资源
      最近更新 更多