查找特定值的组合

Finding combinations of specific values

我不知道如何编写下面的查询。

我的table是

col1 col2 
5   1
5   5
5   6
5   7
4   5
4   8
4   9
4   3
3   3
3   5

我需要 select 不同的 col1 id,其中两个参数都存在于 col2 中。 例如。如果我发送 6,7 它应该发送给我 5

尝试:

SELECT col1
FROM mytable
WHERE col2 IN (6, 7)
GROUP BY col1
HAVING COUNT(DISTINCT col2) = 2

这可能是最快的解决方案之一:

SELECT col1  -- already DISTINCT?
FROM   tbl t1
JOIN   tbl t2 USING (col1)
WHERE  t1.col2 = 6
AND    t2.col2 = 7;

假设 PRIMARY KEYUNIQUE(col1, col2) 的约束,就像通常实施的那样。否则添加 DISTINCT.

还有许多其他方法可以实现关系划分。这里有一些:

  • How to filter SQL results in a has-many-through relation