SQL-查找购买了所有产品的客户

时间:2020-04-17 03:00:24

标签: sql amazon-redshift

假设我有2张桌子:

A: C_ID, P_Id
B: P_ID

我想找到购买B中所有产品的所有C_ID(基本上是B中的所有P_ID)。

您可以检查以下是否正确?还有其他更有效/更容易的选择吗?

SELECT A.C_ID
FROM A
JOIN B ON A.P_iD = B.P_ID
GROUP BY A.C_ID
HAVING COUNT(DISTINCT A.P_ID) >= (SELECT COUNT(DISTINCT P_ID) FROM B)

谢谢!

1 个答案:

答案 0 :(得分:1)

以下查询可与MySQL和SQL Server一起使用。

您可以在没有JOIN

的情况下执行此操作
select 
    c_id
from tableA 
group by 
    c_id
having count(distinct p_id) = (select count(*) from tableB)