【发布时间】:2014-01-08 02:20:01
【问题描述】:
我试图在我的“故事”表中查找所有两条记录集,这样两条记录不会连接到“角色”中某种类型的任何相同记录(通过“参与者”,桥实体)。这是我写的查询:
SELECT str1._id, str2._id
FROM story AS str1, story AS str2
WHERE str1._id < str2._id
AND (SELECT COUNT(chr_id) FROM
(SELECT chr_id
FROM participant
WHERE isparent = 0
AND str_id = str1._id
INTERSECT
SELECT chr_id
FROM participant
WHERE isparent = 0
AND str_id = str2._id)) = 0;
最里面的查询和围绕它的计数查询在单独使用 str1._id 和 str2._id 替换为实际值时按预期运行,但整个查询一起似乎为最终条件产生 TRUE不应该的情况。这让我怀疑这个问题与别名有关,但我不确定要更改什么来解决这个问题。
编辑:这是我用来测试的参与者表中的示例数据
str_id chr_id isparent
1 1 1
1 2 1
1 3 0
2 1 1
2 3 0
3 4 1
3 3 1
3 5 0
3 6 0
3 7 0
这是查询给出的输出
_id _id
1 2
1 3
2 3
这是我期望的输出
_id _id
1 3
2 3
【问题讨论】:
-
您没有显示
story表,而是显示了包含1,2,3的表,此查询对我有效。
标签: sql sqlite subquery self-join