Mysql, где предложение условия для столбца JSON, в котором массив данных объектов - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть следующие записи в таблице 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}]

Я хочу сделать условие условия для столбца данных.если key = 54 и x> = 1, то он должен повторить id => 1,3,4

, если key = 54 и x <1, то он должен повторить id => 2

1 Ответ

0 голосов
/ 28 ноября 2018

Работа с массивами в таких случаях выглядит немного грязно.В конечном итоге вам приходится делать позиционные вещи, такие как следующие, которые, хотя они и работают, нелегко прочитать или изменить.Объекты 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)
);
...