Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-查找购买所有产品的客户_Sql_Amazon Redshift - Fatal编程技术网

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

SQL-查找购买所有产品的客户,sql,amazon-redshift,Sql,Amazon Redshift,假设我有两张桌子: A: C_ID, P_Id B: P_ID 我想找到在B中购买所有产品的所有C_ID(基本上所有p_ID都在B中) 你能检查一下下面是否正确吗?有更有效/更容易的替代方案吗 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) 谢谢 以下查询适用于MySQL

假设我有两张桌子:

A: C_ID, P_Id
B: P_ID
我想找到在B中购买所有产品的所有C_ID(基本上所有p_ID都在B中)

你能检查一下下面是否正确吗?有更有效/更容易的替代方案吗

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)

谢谢

以下查询适用于MySQL和SQL Server

您可以在不加入
的情况下执行此操作

select 
    c_id
from tableA 
group by 
    c_id
having count(distinct p_id) = (select count(*) from tableB)

@TimBiegeleisen感谢您的反馈。我添加了另一个没有使用
JOIN
@TimBiegeleisen的解决方案,我认为需要一个JOIN,因为count(distinct a.p_id)=count(distinct B.p_id)并不意味着它们是同一组p_id,对吗?像A1,A2,A3对,A1,A2,A4。这个#是一样的,但内容是一样的different@user12562215不,实际上不需要该联接,因为
tableB
上的子查询与外部查询不相关+因此,我仍然认为表A和表B需要链接,否则p_id可能完全不同,只是碰巧具有相同的属性number@user12562215我尊重你的想法,但你根本不需要链接这两个表。你的查询似乎是正确的。你需要用
=
代替
=
@yogesharma哦,没错。谢谢