2016-07-25 37 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); 

所有兒童匹配的最後一個條件檢查。

相關問題