SQL - 仅显示不符合参数的值。

时间:2014-10-06 12:02:12

标签: sql

我想把所有没有CNN_NDP_NO为84的人带回来。

由于有些人可以拥有多个CNN_NDP_NO,因此下面的代码只排除84人的入境,而不是整个人。

SELECT
    CLIENT.CLN_SURNAME,
    CLIENT.CLN_NINO, 
    CLIENT.CLN_BIRTH_DATE
 FROM 
    MASTER.CLIENT, 
    MASTER.CLIENT_NDNP
 WHERE 
     MASTER.CLIENT_NDNP.CNN_NDP_NO not in (84)
     and 
     MASTER.CLIENT.CLN_NO = MASTER.CLIENT_NDNP.CNN_CLN_NO;

以下是对不正确数据的进一步解释......

  

法瑞尔先生有以下CNN_NDP_NO(43,44,90,96)

     

由于法瑞尔先生的CNN_NDP_NO为84,他需要从输出中忽略

     

相反,我为Farell先生(43,90,96)获得了三个条目。显然,一个独特的会给我一个,但对于这个例子我不想。

1 个答案:

答案 0 :(得分:1)

您可以使用not exists

执行此操作
SELECT c.CLN_SURNAME, c.CLN_NINO, c.CLN_BIRTH_DATE
FROM MASTER.CLIENT c
WHERE NOT EXISTS (SELECT 1
                  FROM MASTER.CLIENT_NDNP ndnp
                  WHERE c.CLN_NO = ndnp.CNN_CLN_NO and ndnp.CNN_NDP_NO = 84
                 );