T_SQL脚本

时间:2016-08-16 09:59:27

标签: tsql sql-server-2008-r2

在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的行吗?

非常感谢

1 个答案:

答案 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
            )
    )