表X中购买了表Y中所有产品的那些客户ID的列表?

时间:2018-07-04 04:16:52

标签: mysql sql mysql-workbench

我有2个表X和Y,

表X (有5条记录)

Cust_Id  Prod_Key 
 1        'A'
 1        'D'
 2        'C'
 3        'D'
 2        'B'

表Y (有2条记录)

Prod_Key 
  'A'
  'D'

需要SQL列出具有表Y中所有产品的Cust_ID。 〜由于表不断更新,无法硬编码

5 个答案:

答案 0 :(得分:3)

您可以尝试以下操作:

select 
  cust_id 
from 
  Y
LEFT OUTER JOIN 
  X 
  on Y.Prod_key = X.Prod_key
Group by 
  Cust_id
having 
 count(DISTINCT X.Prod_key) = (select count(*) from Y);

SQL FIDDLE DEMO

答案 1 :(得分:1)

您可以将INNER JOINGROUP BYCOUNT一起使用,如下所示

SELECT x.Cust_Id
FROM X x
INNER JOIN Y y ON y.Prod_Key = x.Prod_Key
GROUP BY x.Cust_Id
HAVING COUNT(y.Prod_Key) = (SELECT COUNT(*) FROM Y)

答案 2 :(得分:0)

您可以尝试以下代码来获取Cust_ID的唯一列表

select DISTINCT Cust_Id from X where x.Prod_key in (select y.Prod_key from Y)

答案 3 :(得分:0)

您还可以尝试内部联接,因为只需要{y {1}}存在于表y中的customerid

productkey

答案 4 :(得分:0)

尝试:

从x中选择*,其中prod_key位于(从Y中选择prod_key)