假设我有2张桌子:
A: C_ID, P_Id
B: P_ID
我想找到购买了B中所有产品的所有C_ID(基本上是B中的所有P_ID)。
您可以检查以下是否正确?还有其他更有效/更容易的选择吗?
SELECT A.C_ID
FROM A
LEFT JOIN B ON A.P_iD = B.P_ID
GROUP BY A.C_ID
HAVING COUNT(DISTINCT B.P_ID) >= (SELECT COUNT(DISTINCT P_ID) FROM B)
谢谢!
以下查询适用于MySQL和SQL Server。
您可以在没有JOIN
的情况下执行此操作>
select
c_id
from tableA
group by
c_id
having count(distinct p_id) = (select count(*) from tableB)