在SQL Server 2008R2上,我使用的是这个脚本:
SELECT a.id,
a.ea1,
b.ea2
FROM database1table1 AS a
WHERE a.id LIKE N'Active;
结果集如下所示:
+-----+-----+---------------+---------------+
| Row | ID | EA1 | EA2 |
+-----+-----+---------------+---------------+
| 1 | 1 | wf@email.co | NULL |
| 2 | 1 | NULL | wf2@email.co |
| 3 | 1 | NULL | NULL |
| 4 | 2 | NULL | NULL |
| 5 | 3 | wf3@email.co | NULL |
+-----+-----+---------------+---------------+
等
ID =商户号码。
EA =电子邮件地址。
在上面的输出中,有三行ID = 1,但只有两行有电子邮件地址。
我希望我的结果输出没有电子邮件地址的行。因此,对于此示例,输出应仅包含ID = 2的行。
我尝试添加此WHERE子句:
AND (a.EA1 IS NULL) AND (a.EA2 IS NULL);
它仍然返回ID = 1的行,因为其中一行没有电子邮件地址。
任何人都可以建议修改我的脚本,只会返回ID = 2的行吗?
非常感谢
答案 0 :(得分:1)
尝试使用NOT EXISTS
SELECT
*
FROM
Tbl T
WHERE
T.EA1 IS NULL AND
T.EA2 IS NULL AND
NOT EXISTS
(
SELECT 1 FROM Tbl IT
WHERE
IT.ID = T.ID AND
(
IT.EA1 IS NOT NULL OR
IT.EA2 IS NOT NULL
)
)