如果匹配表2中的所有列项,则从表1中获取列项

时间:2016-03-02 22:50:31

标签: sql

表1有2列

C1 | C2
-------
A  | 1A
A  | 2A
A  | 3A
B  | 1B
B  | 2B
C  | 1C
D  | 1D
D  | 2D
D  | 3D
D  | 4D

表2有2列

ID | C2
1  | 1A
1  | 2A
1  | 3A
1  | 1B
2  | 1D
2  | 2D
3  | 1C
4  | 1A
4  | 1B

RETURN 1,A AND 3,C因为1匹配A中的所有项目,3匹配C中的所有项目

1 个答案:

答案 0 :(得分:0)

如果我假设每列中的值都是唯一的,那么关键的想法是在表中的 second 列上进行连接,然后进行聚合。

having子句可以计算匹配数,并确保它与第一个表中的预期数匹配:

select t1.c1, t2.c1
from t1 join
     t2
     on t1.c2 = t2.c2
group by t1.c1, t2.c1
having count(*) = (select count(*) from t1 tt1 where tt1.c1 = t1.c1);