0

私は2つのテーブルを持っています:

create table xyz
(campaign_id varchar(10)
,account_number varchar)

Insert into xyz
values ( 'A', '1'), ('A', '5'), ('A', '7'), ('A', '9'), ('A', '10'),
       ( 'B', '2'), ('B', '3'),
       ( 'C', '1'), ('C', '2'), ('C', '3'), ('C', '5'), ('C', '13'), ('C', '15'),
       ('D', '2'), ('D', '9'), ('D', '10')


create table abc
(account_number varchar)

insert into abc
values ('1'), ('2'), ('3'), ('5')

1, 2, 3, 5ここで、4 つの account_numberがすべて a に含まれるクエリを書きたいと思いますCampaign_id

答えはCです。

[私の目的は、account_number 1、2、3、および 5 を含むキャンペーン コードを見つけることです。この条件は、キャンペーン コード C によってのみ満たされます。]

と を使ってみINましALLたが、うまくいきません。助けてください。

4

3 に答える 3

1

あなたが求めているのは内部結合だと思います。あなたの質問から、あなたがあなたのデータをどのように望んでいるのかわかりません。ただし、これにより、手順を進める方法と、さらに先に進むためにドキュメントでロックするキーワードについての手がかりが得られます。

SELECT a.*
FROM xyz a
INNER JOIN abc b ON b.account_number = a.account_number;

編集:

元の質問を誤解していたようです..申し訳ありません。必要なものを取得するには、次のことができます。

SELECT  campaign_id
FROM    xyz 
WHERE   account_number IN ('1', '2', '3', '5')
GROUP BY campaign_id
HAVING  COUNT(DISTINCT account_number) = 4;

さらに詳しく調べたい場合は、これを関係分割と呼びます。

于 2014-05-01T01:16:42.973 に答える
0
select xyz.campaign_id
from xyz
join abc
on xyz.account_number = abc.account_number
group by xyz.campaign_id
having count(xyz.campaign_id) = 
(select count(account_number) from abc);

注意: t-sql の実装

于 2014-05-01T01:37:25.183 に答える