mysql where子句查询json列中的哪个对象数组中的数据

vmdwslir  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(398)

我在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且x>=1,则应重新运行id=>1,3,4
如果key=54且x<1,则应重新运行id=>2

xlpyo6sf

xlpyo6sf1#

在这种情况下,处理数组有点麻烦。你最终不得不做一些位置上的事情,比如,当它们工作时,不容易阅读或修改。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)
);

相关问题