【发布时间】:2011-07-09 05:51:16
【问题描述】:
我有两张桌子。
- 联系人表 - contact_id、contact_email、contact_name 等
- 退出表 - 联系人电子邮件、退出范围(事件、公司)
所以一个联系人可能有多个事件选择退出,但我真正关心的是他们是否有全公司范围的选择退出。
如何加入数据,以便如果联系人与 optout 表中具有“公司”范围的任何行匹配,则它不会显示在结果中?
【问题讨论】:
我有两张桌子。
所以一个联系人可能有多个事件选择退出,但我真正关心的是他们是否有全公司范围的选择退出。
如何加入数据,以便如果联系人与 optout 表中具有“公司”范围的任何行匹配,则它不会显示在结果中?
【问题讨论】:
SELECT c.*
FROM Contacts c
WHERE NOT EXISTS(SELECT NULL
FROM OptOut o
WHERE c.contact_email = o.contact_email
AND o.scope = 'company')
这也可以通过LEFT JOIN 来完成:
SELECT c.*
FROM Contacts c
LEFT JOIN OptOut o
ON c.contact_email = o.contact_email
AND o.scope = 'company'
WHERE o.contact_email IS NULL
【讨论】:
select * from contacts where contact_email not in(select contact_email from optout where scope = 'company');
【讨论】: