如何在子表中查询其子项完全匹配的项目

时间:2016-07-25 15:11:17

标签: sql sql-server

我有2个表:ParentChild和Child。

ParentChild表有2列PID和CID,其中1个PID可以映射到多个CID。子表包含不同的CID。问题是Child表中的CID不一定涵盖ParentChild表中的所有CID。

现在我想找到每个PID在Child表中拥有所有CID的所有PID。例子:   P1有3个CID,如果所有都在Child表中,则选择P1;   P2有2个CID,如果不是全部都在子表中,则不选择P2。

如何以清晰,高效的方式编写查询?

1 个答案:

答案 0 :(得分:3)

一种方法使用聚合:

select pc.pid
from parentchild pc left join
     child c
     on pc.cid = c.cid
group by pc.pid
having count(*) = count(c.cid);

最后一个条件检查所有孩子是否匹配。