2017-02-01 74 views
0

我有我试图做一个连接两个表的....我的表的结构是这样的......加入两个表 - 显示数据在没有匹配记录

tbl1 
NoClient   ApptDate   Status   
1234    12/22/2016  A 
3555    1/23/2017  A 
3495    12/23/2016  A 


tbl2 
NoClient   ApptDate 
1234    12/22/2016 
3555    1/24/2017 

所以我想加入这两个表NoClientApptDate

我的目标是看到tbl1所有记录 - 那里是tbl2ApptDateNoclient

期望的最终结果在这种情况下

NoClient  AppDate 
3555   1/23/2017   
3495   12/23/2016  

NoClient = 3555没有匹配的记录在相应的记录tbl2然而,ApptDate是不一样的。 NoClient = 3495一起没有相应的记录。

回答

2

您可以使用此一LEFT OUTER JOIN

Select  T1.NoClient, T1.ApptDate 
From  Tbl1 T1 
Left Join Tbl2 T2 On T1.NoClient = T2.NoClient 
         And T1.ApptDate = T2.ApptDate 
Where  T2.NoClient Is Null 

或者,你也可以使用一个WHERE NOT EXISTS

Select T1.NoClient, T1.ApptDate 
From Tbl1 T1 
Where Not Exists 
(
    Select * 
    From Tbl2 T2 
    Where T1.NoClient = T2.NoClient 
    And  T1.ApptDate = T2.ApptDate 
) 
+0

我相信你的第一个查询将返回与OP想要的相反的 - 匹配的记录。 – Tricky12

+0

@ Tricky12'Where T2.NoClient Is Null'会过滤掉任何匹配项。 – Siyual

+0

是的,当我第一次看到它时,它正在考虑它。 – Tricky12

1

我认为这是你在找什么。

SELECT * FROM表1

WHERE(NOT EXISTS (SELECT * FROM表2

WHERE(Table1.NoClient = Table2.NoClient) AND(Table1.ApptDate = Table2.ApptDate)))

相关问题