【问题标题】:Mysql where clause query on json column in which array of objects dataMysql where子句查询json列中的对象数据数组
【发布时间】:2018-11-28 11:56:39
【问题描述】:

我在 mysql(5.7) 表中有以下记录,其中数据具有 json 数据类型。

id  data 
1   [{"key": 1,"value": "rom"},{"key": 54,"x": 1}]
2   [{"key": 1,"value": "sun"},{"key": 54,"x": 0.5}]
3   [{"key": 54,"x": 1.2},{"key": 1,"value": "test"}]
4   [{"key": 1,"value": "japan"},{"key": 54,"x": 2}]
5   [{"key": 1,"value": "east"},{"key": 52,"x": 1}]

我想在数据列上设置 where 条件。 如果 key = 54 and x >= 1 那么它应该返回 id => 1,3,4

如果 key = 54 并且 x 2

【问题讨论】:

  • 您使用的是 MySQL 8+ 版本吗?
  • Mysql版本为5.7

标签: mysql json database where-clause


【解决方案1】:

在这种情况下处理数组有点混乱。你最终不得不做如下的定位事情,虽然它们确实有效,但不容易阅读或修改。 JSON 对象更灵活一些。

select id from y where 
(json_contains(doc,"54","$[0].key") or json_contains(doc,'54',"$[1].key")
AND
(json_extract(doc,"$[0].x") >= 1 or json_extract(doc,"$[1].x") >= 1)
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多