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

问题描述 投票:-3回答:1

假设我有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)

谢谢!

sql amazon-redshift
1个回答
0
投票

以下查询适用于MySQL和SQL Server。

您可以在没有JOIN的情况下执行此操作>

select 
    c_id
from tableA 
group by 
    c_id
having count(distinct p_id) = (select count(*) from tableB)
© www.soinside.com 2019 - 2024. All rights reserved.