如何选择没有有效电子邮件地址的客户?

时间:2013-04-30 15:23:55

标签: sql sql-server

我有一个链接到Client Contact表的Client表。当然,许多客户可能有多个联系人。 我有一个使用DISTINCT的Select语句向我显示哪些客户端在Client Contact表中至少有一个电子邮件联系人。

SELECT DISTINCT intpkautoclientid
FROM   tblclient c
       JOIN tblclientcontact cc WITH (nolock)
         ON cc.intfkclientid = c.intpkautoclientid
WHERE  NULLIF(cc.stremail, '') IS NOT NULL
ORDER  BY intpkautoclientid  

是否有一种简单的方法可以使用上面的选项返回不属于“具有电子邮件地址的客户”SET的所有客户端。

我真的想知道哪些客户我没有任何有效的电子邮件地址。

3 个答案:

答案 0 :(得分:2)

SELECT  *
FROM    tblclient
WHERE   intpkautoclientid NOT IN
        (
        SELECT  intfkclientid
        FROM    tblclientcontact
        WHERE   stremail > ''
        )

答案 1 :(得分:2)

另一种可读方式是使用NOT EXISTS

SELECT intpkautoclientid
FROM   tblclient c
WHERE NOT EXISTS
(
   SELECT 1 FROM tblclientcontact cc 
   WHERE cc.intfkclientid = c.intpkautoclientid
)

答案 2 :(得分:0)

将您的联接更改为left outer joinwhere子句以测试Nullness:

SELECT DISTINCT intpkautoclientid
FROM   tblclient c
       left outer JOIN tblclientcontact cc WITH (nolock)
         ON cc.intfkclientid = c.intpkautoclientid and cc.stremail is not null
WHERE  cc.stremail is null
ORDER  BY intpkautoclientid  

此外,可能不再需要distinct