SQLite 返回与另一个表中的特定记录集匹配的记录

发布于 2024-11-05 09:32:08 字数 607 浏览 0 评论 0原文

我有一个表与另一个表具有一对多关系。我想要第一个表中的记录与第二个表中的特定集匹配。

CREATE TABLE A (aId INTEGER PRIMARY KEY);
CREATE TABLE B (bId INTEGER PRIMARY KEY, aId INTEGER, c INTEGER);

INSERT INTO A (aId) VALUES (1);
INSERT INTO A (aId) VALUES (2);

INSERT INTO B (bId, aId, c) VALUES (1, 1, 1);
INSERT INTO B (bId, aId, c) VALUES (2, 1, 2);
INSERT INTO B (bId, aId, c) VALUES (3, 2, 2);
INSERT INTO B (bId, aId, c) VALUES (4, 2, 3);

例如,我是aId,其中c是1和2。所以aId = 1。我不希望它返回aId 2,因为当它匹配c = 2时,它没有c = 1。

SELECT aId FROM B WHERE c IN(1,2);

给我1,1, 2.是否有类似的东西可以匹配所有元素而不是任何元素?

I have a table that has a one-to-many relationship to another table. I want the records from the first table that match a specific set in the second table.

CREATE TABLE A (aId INTEGER PRIMARY KEY);
CREATE TABLE B (bId INTEGER PRIMARY KEY, aId INTEGER, c INTEGER);

INSERT INTO A (aId) VALUES (1);
INSERT INTO A (aId) VALUES (2);

INSERT INTO B (bId, aId, c) VALUES (1, 1, 1);
INSERT INTO B (bId, aId, c) VALUES (2, 1, 2);
INSERT INTO B (bId, aId, c) VALUES (3, 2, 2);
INSERT INTO B (bId, aId, c) VALUES (4, 2, 3);

For example, I was aId Where c is 1 and 2. so aId = 1. I don't want it to return aId 2 because while it matches c = 2 it doesn't have c = 1.

SELECT aId FROM B WHERE c IN(1,2);

Gives me 1,1,2. Is there something similar that matches all elements rather than any?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

行至春深 2024-11-12 09:32:08

如果您知道 C 的 IN 子句中有多少项,

SELECT aID FROM B WHERE C IN(1,2) GROUP BY aID HAVING COUNT(*)=2;

其中 COUNT(*) 等于 IN 中的元素数。如果过滤器更复杂,我们将需要另一种方法。

If you know how many items are in the IN clause for C,

SELECT aID FROM B WHERE C IN(1,2) GROUP BY aID HAVING COUNT(*)=2;

where the COUNT(*) is equal to the number of elements in the IN. If the filter is more complicated, we’ll need another approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文