使用 sqlite json_each 过滤 json 数组中的多个项目
我有一个包含以下架构和数据的 sqlite 表:
CREATE TABLE Feeds (
id INTEGER PRIMARY KEY AUTOINCREMENT,
groups JSON NOT NULL
DEFAULT ('[]')
);
INSERT INTO Feeds(groups) VALUES ('["fav1", "fav2"]');
INSERT INTO Feeds(groups) VALUES ('["fav3", "fav4"]');
INSERT INTO Feeds(groups) VALUES ('["fav1"]');
INSERT INTO Feeds(groups) VALUES ('["fav1", "fav2", "fav5"]');
我想查找同时具有 fav1
组和 fav2
组的所有行。我可以通过以下方式查询单个组:
SELECT * FROM Feeds, json_each(groups) WHERE json_each.value IS "fav1"
但我正在努力弄清楚如何查询多个组,以下似乎不起作用:
SELECT * FROM Feeds, json_each(groups) WHERE json_each.value IS "fav1" AND json_each.value IS "fav2"
I have an sqlite table with the following schema and data:
CREATE TABLE Feeds (
id INTEGER PRIMARY KEY AUTOINCREMENT,
groups JSON NOT NULL
DEFAULT ('[]')
);
INSERT INTO Feeds(groups) VALUES ('["fav1", "fav2"]');
INSERT INTO Feeds(groups) VALUES ('["fav3", "fav4"]');
INSERT INTO Feeds(groups) VALUES ('["fav1"]');
INSERT INTO Feeds(groups) VALUES ('["fav1", "fav2", "fav5"]');
I want to find all the rows that have both the fav1
group and the fav2
group. I am able to query a single group via the following:
SELECT * FROM Feeds, json_each(groups) WHERE json_each.value IS "fav1"
But i am struggling to figure out how to query more than one group, the following doesnt seem to work:
SELECT * FROM Feeds, json_each(groups) WHERE json_each.value IS "fav1" AND json_each.value IS "fav2"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以通过聚合来实现:
如果 json 数组内没有重复项,您可以将
COUNT(DISTINCT t.value)
更改为COUNT(*)
。请参阅演示。
You can do it with aggregation:
You can change
COUNT(DISTINCT t.value)
to justCOUNT(*)
if there are no duplicates inside the json array.See the demo.