我有2个表,订户&发送日志。我需要选择所有订阅者,但排除符合发送日志表中的条件的记录。从表A中选择但排除表B中匹配的情况
的标准是,他们是一个“高级用户”,该SubscribePreference = 1和,他们从来没有收到一个“GoPro的”电子邮件
我这里有一个SQL拨弄来表示,但不能找出查询
http://sqlfiddle.com/#!3/3e1a7/6
在此示例中,我想回到大卫,埃德&弗兰克因为从未收到了“GoPro的”电子邮件
有人可以帮助我请在这里?
我有2个表,订户&发送日志。我需要选择所有订阅者,但排除符合发送日志表中的条件的记录。从表A中选择但排除表B中匹配的情况
的标准是,他们是一个“高级用户”,该SubscribePreference = 1和,他们从来没有收到一个“GoPro的”电子邮件
我这里有一个SQL拨弄来表示,但不能找出查询
http://sqlfiddle.com/#!3/3e1a7/6
在此示例中,我想回到大卫,埃德&弗兰克因为从未收到了“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的外键并将其加入。上面的查询可以工作,但用整数和适当的键可以更快。
感谢一群完美工作 – user1735894 2013-04-25 23:32:44