拒绝来自另一个表中的select if条件的行

时间:2011-07-08 21:43:39

标签: mysql join

我有两张桌子。

  1. 联系人表 - contact_id,contact_email,contact_name等
  2. 选择退出表格 - contact_email,退出的范围(活动,公司)
  3. 所以一个联系人可能有多个事件选择退出,但我真正关心的是他们是否有公司选择退出。

    如何加入数据,以便如果联系人与optout表格中具有“公司”范围的任何行匹配,则该结果不会显示在结果中?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

从contact_email不在的联系人中选择*(从optout中选择contact_email,其中scope ='company');