我有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。 〜由于表不断更新,无法硬编码
答案 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);
答案 1 :(得分:1)
您可以将INNER JOIN
与GROUP BY
和COUNT
一起使用,如下所示
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)