2014-09-22 69 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

相关问题