我有两列的表......
id id2
1 1
1 2
1 3
2 1
2 2
2 4
3 2
3 3
3 4
我想返回具有id2 in (1, 2, 4)
但具有列表中所有值的ID。
在上述情况下,它将返回id = 2
。这可能吗?
答案 0 :(得分:5)
select id
from MyTable
where id2 in (1, 2, 4)
group by id
having count(distinct id2) = 3 --this must match the number of elements in IN clause
<强>更新强>
如果ID列表是可变的,那么您应该创建一个包含不同ID集的附加表,然后您可以JOIN
对其进行过滤。
答案 1 :(得分:1)
您是否暗指relational division?例如供应所有产品的供应商,能够悬挂所有飞机的飞行员等等?
如果是这样,this article在SQL中有许多示例实现。
答案 2 :(得分:0)
执行自联接以一次性测试同一个表中的不同行:
SELECT id
FROM t AS t0
JOIN t AS t1 ON t1.id=t0.id
JOIN t AS t2 ON t2.id=t1.id
WHERE t0.id2=1
AND t1.id2=2
AND t2.id2=4