我有 2 个表、订阅者和发送日志。我需要选择所有订阅者,但在 Sendlog 表中排除符合我的条件的记录。
标准是他们是“PowerUser”,SubscribePreference = 1,并且他们从未收到过“GoPro”电子邮件
我在这里有一个 SQL 小提琴来表示它,但无法弄清楚查询
http://sqlfiddle.com/#!3/3e1a7/6
在此示例中,我想退回 Dave、Ed 和 Frank,因为他们从未收到过“GoPro”电子邮件
有人可以帮我吗?
我有 2 个表、订阅者和发送日志。我需要选择所有订阅者,但在 Sendlog 表中排除符合我的条件的记录。
标准是他们是“PowerUser”,SubscribePreference = 1,并且他们从未收到过“GoPro”电子邮件
我在这里有一个 SQL 小提琴来表示它,但无法弄清楚查询
http://sqlfiddle.com/#!3/3e1a7/6
在此示例中,我想退回 Dave、Ed 和 Frank,因为他们从未收到过“GoPro”电子邮件
有人可以帮我吗?
这应该有效:
SELECT DISTINCT s.EmailAddress
, 'GoPro' AS CampaignName
, sl.SendDate
FROM Subscribers s
LEFT JOIN SendLog sl
ON s.EmailAddress = sl.EmailAddress
AND CampaignName = 'GoPro'
WHERE s.Entitlement = 'PowerUser'
AND s.SubscribePreference = 1
AND sl.EmailAddress IS NULL
我相信这会奏效:
SELECT DISTINCT Subscribers.EmailAddress
FROM Subscribers
LEFT OUTER JOIN SendLog
ON Subscribers.EmailAddress = SendLog.EmailAddress
AND SendLog.CampaignName = 'GoPro'
WHERE SendLog.EmailAddress IS NULL
AND Subscribers.SubscribePreference = 1
And Subscribers.Entitlement = 'PowerUser'
出于性能原因,我建议在订阅者表中添加一个 ID 列作为主键,然后在 SendLog 表中创建一个名为 SubscriberID 的外键并将它们加入其中。上面的查询可以工作,但使用整数和适当的键会更快。