我有一个如下表:
| Col1 | Col2 |
| ---- | ---------- |
| A | val1 |
| A | val2 |
| B | val1 |
| C | val3 |
我想接收Col1
的那些值,它包含val1
和val2
都作为Col2
(即A
(的行。我知道我可以使用INTERSECT
来完成这项工作,但这需要我将多个子句拼凑在一起。有没有一种方法可以使用单个子句来实现这一点,比如IN ALL
之类的子句?
否,但您可以使用group by
和having
。假设你没有重复:
select col1
from t
where col2 in (val1, val2)
group by col1
having count(*) = 2;
2
与列表中的项目数相匹配。