我将尽我所能解释我被要求做的事情。
假设我们拥有对 DataBase A 的开发人员访问权限,其中包含许多表,但我们最关心的是两个表。第一个称为Accounts,第二个称为Campaign。现在,在 Campaign 表中,我们有很多字段,但最重要的是CampaignTypeID和AccountID。
在Accounts表中,最重要的字段是AccountID和CustomerNumber。在Accounts表中,我们有许多参与不同活动的客户;因此我们可以说一个客户可以在他们的帐户下拥有许多不同的 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。这会让事情变得复杂吗?
架构
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);