2016-07-25 36 views
-1

我有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,如果不是全部都在Child表中,则P2未被选中。

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

+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); 

所有儿童匹配的最后一个条件检查。

相关问题