假设我有 3 个表,每个表都有一个 field foo
。我如何获得以下记录:
- 所有 3 个表中都存在 foo 值的所有记录?
- 任意 2 个表中存在 foo 值的所有记录?
- foo 的值仅存在于 1 个表中的所有记录?
foo
是独特的。
我对#1的尝试:
SELECT a.foo
FROM a
WHERE a.foo IN (SELECT b.foo
FROM b
WHERE b.foo IN (SELECT c.foo
FROM c))
对于#2,我认为我需要做一些类似于#1 的事情,但是一次对 2 个表 {a,b}, {b,c}, {a,c} - 然后 UNION 呢?没有把握。
对于#3,没有线索。
更新:示例数据
Table1
- foo-a
- foo-b
- foo-c
Table2
- foo-a
- foo-b
Table3
- foo-a
- foo-c
- foo-d
对于 #1 问题,所有 3 个表中都存在 1 条记录:foo-a。对于#2 问题,2 个表中存在 2 条记录:foo-b(在 Table1 和 Table2 中)和 foo-c(在 Table1 和 Table3 中)。对于 #3 问题,只有 1 个表中存在 1 条记录:foo-d。