我有一个链接到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的所有客户端。
我真的想知道哪些客户我没有任何有效的电子邮件地址。
答案 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 join
和where
子句以测试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
。