我会尽力解释我被要求做的事情。
假设我们有开发人员访问DataBase A ,里面有很多表,但我们最关心的是两个表。第一个称为帐户,第二个称为广告系列。现在,在Campaign表格中我们有很多字段,但最重要的是 CampaignTypeID 和 AccountID 。
在帐户表中,最重要的字段是 AccountID 和 CustomerNumber 。在帐户表中,我们有许多参与不同广告系列的客户;因此,我们可以说单个客户可以在其帐户下拥有许多不同的CampaignTypeID。
现在我要求做的是:为每个CampaignTypeID显示一个CustomerNumber (总共5种类型)。 (我认为可以接受重复的CustomerNumbers) (实施例)
CampaignTypeID CustomerNumber
1 34535
2 23525
3 23423
4 52355
5 23525
这是我使用的查询:
SELECT top 5 CustomerNumber[Customer Number], CampaignTypeID ,
FROM A.Account a
JOIN A.Campaign c ON a.AccountID = c.AccountID
WHERE CampaignTypeID IN (5)
GROUP BY CustomerNumber, CampaignTypeID
此查询的结果如下: (实施例)
CampaignTypeID CustomerNumber
5 34535
5 23525
5 23423
5 52355
5 23525
不完全是我想要的,首先我将所有的CampaignTypeID插入到WHERE子句中,但这只会返回重复的CampaignTypeID。 (实施例)
CampaignTypeID CustomerNumber
3 34535
3 23525
4 23423
5 52355
5 56678
3 23525
正如您在此处所看到的,我唯一的选择是逐个输入每个CampaignTypeID。然后我会将其中的每一个复制到电子表格中。我上面展示的只是一个例子,但我必须做的事实上有40个不同的CampaignTypeID。这是一项非常繁琐的工作,我知道可以提高效率。
如果可能的话,我想知道一种更有效的方法来完成这项任务。
谢谢!
更新:好的,我应该添加一件小事。 CampaignTypeID不是顺序的,它们更像是5,6,7,8,9,10,50,65,110,250,1104,1114。这会复杂吗?
SCHEMA
CREATE TABLE Accounts
(
AccountID int auto_increment primary key,
CustomerID int(20)NOT NULL
);
INSERT INTO Accounts
(CustomerID)
VALUES
(24),(22),(35),(256),(1246),(11),(224),(55),(664),(773),(234),(568),(245),(986),(768);
CREATE TABLE Campaign
(
CampaignID int auto_increment primary key,
CampaignTypeID int(20) NOT NULL,
CONSTRAINT fk_AccountID FOREIGN KEY(AccountID)
REFERENCES Accounts(AccountID)
);
INSERT INTO Campaign
(CampaignTypeID)
VALUES
(6),(7),(8),(9),(10),(245),(1140),(1150),(1160),(1170),(1180),(1190),(1240),(1250),(1260);
答案 0 :(得分:0)
Select
CampaignTypeID,
Min(CustomerNumber)
From
A.Account a
Inner Join
A.Campaign c
On a.AccountID = c.AccountID
Where
CampaignTypeID Between 1 And 5
Group By
CampaignTypeID