读取数组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 ??
答案 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;