1

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

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 的所有客户。

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

4

3 回答 3

2
SELECT  *
FROM    tblclient
WHERE   intpkautoclientid NOT IN
        (
        SELECT  intfkclientid
        FROM    tblclientcontact
        WHERE   stremail > ''
        )
于 2013-04-30T15:26:27.633 回答
2

另一种可读的方法是使用NOT EXISTS

SELECT intpkautoclientid
FROM   tblclient c
WHERE NOT EXISTS
(
   SELECT 1 FROM tblclientcontact cc 
   WHERE cc.intfkclientid = c.intpkautoclientid
)
于 2013-04-30T15:30:47.737 回答
0

将您的联接更改为 aleft 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可能不再需要。

于 2013-04-30T15:30:49.400 回答