2015-05-21 62 views
1

我有兩個表格,計費和每週。
我需要找到計費表中的值,但不是每週表中的值,但我需要將其基於多個列。
我有隻是一列工作的查詢:查找存在於一個表中但不是基於多列的記錄

SELECT * from billing 
outer apply 
(select * from weekly where billing.[email]= weekly.[email])a 
where a.[email] is null 

有時候在我的數據的電子郵件可以改變。
所以我需要添加一些東西,如果電子郵件不匹配,檢查名字和姓氏,但不知道如何做到這一點。

+0

是否每週都有外鍵記賬? – paulpitchford

+0

我需要確保[名字]和[姓氏]匹配或電子郵件匹配。 – Anjie

+0

看起來像@Mureinik發佈了我想發佈的確切答案。但是我打算把它作爲答案發布,因爲我已經打出了它。 – FutbolFan

回答

2

您可以使用exists操作:

SELECT * 
FROM billing 
WHERE NOT EXISTS 
     (SELECT * 
     FROM weekly 
     WHERE billing.[email] = weekly.[email] OR 
       (billing.[firstName] = weekly.[firstName] AND 
       billing.[lastName] = weekly.[lastName] 
       ) 
     ) 
+0

真棒謝謝! – Anjie

0

您可以使用NOT EXISTS運營商排除匹配週刊,基於電子郵件或姓氏和名字的任何記錄。

SELECT bl.* 
     FROM billing bl 
     WHERE NOT EXISTS (
       SELECT 1 
       FROM weekly wk 
       WHERE (bl.[email] = wk.[email] 
        OR (
         bl.firstName = wk.firstName 
         AND bl.lastName = wk.lastName)) 
        AND bl.lenderName <> wk.lenderName --added this check 
       ) 
相關問題