2014-09-22 72 views
1

我有兩組表格,包括賬戶上所有聯繫人的標題等等。爲了數據遷移目的,我需要從表A中選擇所有ContactsIds以及他們的AccountID在表B中不存在。它是ContactId和AccountID的組合。我曾嘗試以下:選擇表A中列的組合不在表B中

Select * from Final_Combined_Result wfcr 

WHERE NOT EXISTS (Select Contact_ID, Account_ID from Temp_WFCR) 

我知道這是完全關閉的,但我已經看過一對夫婦對這裏的其他問題,但未能找到一個合適的解決方案。

我也試過這樣:

Select * from Final_Combined_Result wfcr 
WHERE NOT EXISTS 
    (Select Contact_ID, Account_ID from Temp_WFCR as tc 
    where tc.Account_ID=wfcr.Account_InternalID 
    AND tc.Account_ID=wfcr.Contact_InternalID) 

這似乎是正確的,但我想確認一下。

+0

您是否希望輸出不同的列?或將行數限制爲只有那些沒有聯繫人和賬戶ID的行數? – paqogomez 2014-09-22 16:33:23

+0

你需要關聯那些不知何故。 http://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join – 2014-09-22 16:34:59

+0

你最近的編輯看起來不錯,除了子選擇你加入'account_id'兩次。將第二個更改爲「contact」。這與我最初發布的那個基本相同。查看我最近的修改,並告訴我是否需要更多幫助/示例。 – paqogomez 2014-09-22 18:36:46

回答

2

@ juergend的回答顯示了左連接。

使用不存在,你在子選擇加入,它應該是這樣的:

Select wfcr.* 
from 
    Final_Combined_Result wfcr 
    WHERE NOT EXISTS 
    (Select 1 --select values dont matter here, only the join restricts. 
    from 
     Temp_WFCR t 
    where t.Contact_ID = wfcr.Contact_InternalID 
     and t.account_id = wfcr.Account_InternalID 
    ) 
3
Select wfcr.ContactsId, wfcr.AccountID 
from Final_Combined_Result wfcr 
left join Temp_WFCR t_wfcr ON t_wfcr.ContactsIds = wfcr.ContactsId 
          AND t_wfcr.AccountID = wfcr.AccountID 
WHERE t_wfcr.AccountID is null 

this great explanation of joins

+0

[join]的圖片展示(http://i.imgur.com/1m55Wqo.jpg) – NMK 2014-09-22 17:28:44

相關問題