我有一個帶有以下架構和資料的 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"
uj5u.com熱心網友回復:
您可以通過聚合來做到這一點:
SELECT f.*
FROM Feeds f, json_each(groups) t
WHERE t.value IN ('fav1', 'fav2')
GROUP BY f.id
HAVING COUNT(DISTINCT t.value) = 2;
您可以更改COUNT(DISTINCT t.value)為僅COUNT(*)當 json 陣列內沒有重復項時。
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/446891.html
