【发布时间】:2010-09-12 20:32:53
【问题描述】:
我有一个多对多索引表,我想对其进行包含/排除类型查询。
fid 实际上是一个整数索引,但这里以字母表示以便于理解。这是一个示例表:
表 t
eid | fid
----+----
1 | A
1 | B
1 | C
2 | B
2 | C
3 | A
3 | C
4 | A
4 | B
5 | B
这是我想要的一些示例查询。
- 哪些 eid 具有 FID B 而不是 A? (回答 eid 2 和 5)
- 哪些 eid 具有 FID C 而不是 A? (回答 eid 2)
我似乎想不出一个可以做到这一点的查询。
我尝试过这样的自我加入:
select *
from t as t1
join t as t2
where t1.eid=t2.eid
and t1.fid!=t2.fid
and t1.fid=B and t2.fid!=A
这行不通,因为它仍会返回 eid=1 和 fid=C 的行。
我清楚我想要什么吗?
【问题讨论】: