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

时间:2011-05-04 19:23:17

标签: sql sqlite

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

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。是否有类似的东西匹配所有元素而不是任何元素?

1 个答案:

答案 0 :(得分:1)

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

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

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