读取数组json - memsql

时间:2017-01-01 14:26:49

标签: json memsql

读取数组json - memsql

我有数组,其中的项目是json。

表:

CREATE TABLE `example`  (
orderId BIGINT,
`data`  JSON NULL
);

示例记录

orderId -> ZA/XYZ
data -> [
{'item':1,'price':20},
{'item':2,'price':30},
{'item':3,'price':40}
(...)
]

当我搜索至少有一个大于20的产品的订单时,我使用这个SQL:

SELECT orderId FROM example WHERE data::`0`::price > 20 OR data::`1`::price > 20 OR data::`2`::price > 20 (...) OR OR OR....

但我不知道订单中有多少产品。

这个问题有解决方案吗?

也许是这样的:

SELECT orderId FROM example WHERE data::*::price > 20 ??

1 个答案:

答案 0 :(得分:0)

很遗憾,我们目前不直接支持这一点。

解决方法是创建一个包含0,1,2,......的行的引用表:

create reference table r (i bigint primary key);
insert into r values (0), (1), (2), ...;

然后你加入它并使用每个整数从数组中获取相关值并测试密钥:

select distinct orderId from example, r where json_extract_double(json_extract_json(data, r.i), 'price') > 20;