我正在创建一个表,其中包含一个 json 列,插入的数据具有以下结构:
{
"options" : {
"info" : [
{"data" : "data1", "verified" : 0},
{"data" : "data2", "verified" : 1},
... and more
],
"otherkeys" : "some data..."
}
}
我想运行一个查询来获取 verified = 1
"info"的 data
这是针对在 Windows 10 上运行的 mysql 5.7 社区
select id, (meta->"$.options.info[*].data") AS `data`
from tbl
WHERE meta->"$.options.info[*].verified" = 1
期望“data2”的输出,但实际输出什么都没有。
下面的查询完美运行
select id, (meta->"$.options.info[*].data") AS `data`
from tbl
WHERE meta->"$.options.info[1].verified" = 1
但我需要搜索数组中的所有项目,而不仅仅是索引 1
如何解决?
(抱歉英语不好)
最佳答案
尝试:
SELECT `id`, (`meta` -> '$.options.info[*].data') `data`
FROM `tbl`
WHERE JSON_CONTAINS(`meta` -> '$.options.info[*].verified', '1');
参见 dbfiddle .
关于mysql - 如何在嵌套数组 json 上选择带有条件的 mysql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56846225/