我有2个表tblEmp1和tblEmp2,我需要通过比较tblEmp2来提取tblEmp1的非匹配行。SQL查询返回来自两个表的不匹配的行
SELECT * FROM tblEmp1
EmpMasterID DeptID MngrID TEMPID Salary1 Salary2 DOJ
46 3 995 559 1000000000 1000000000 2016-12-31
47 3 999 556 2500000000 2500000000 2016-12-31
48 3 994 165 1500000000 1500000000 2016-12-31
49 3 998 566 7500000000 7500000000 2016-12-31
50 3 1049 562 9500000000 9500000000 2016-12-31
SELECT * FROM tblEmp2
EmpID DeptName DeptID MngrID TEMPID Salary1 Salary2 DOJ
84 XYZ 3 994 165 1500000000 1500000000 2016-12-31
85 XYZ 3 995 559 1000000000 1000000000 2016-12-31
86 XYZ 3 999 556 2500000000 2500000000 2016-12-31
大家都可以看到上面的DEPTID = 3,MngrID = 994,995,999和TempID = 165,559 ,556我拥有与DOJ ='2016-12-31'相匹配的salary1和salary2。
我的要求是我应该只提取从第一个表中不存在的tblEmp2表的记录DFeptID = 3和DOJ =“2016年12月31日” 即我的查询应该从tblEmp1返回结束2行表
EmpMasterID DeptID MngrID TEMPID Salary1 Salary2 DOJ
49 3 998 566 7500000000 7500000000 2016-12-31
50 3 1049 562 9500000000 9500000000 2016-12-31
因为它们不存在在tblEmp2表,其中DEPTID = 3和DOJ = '2016年12月31日'
这就是我TRID至今
select t1.EmpMasterID, t1.DeptID, t1.MngrID, t1.TEMPID, t1.Salary1, t1.Salary2, t1.DOJ
from tblEmp1 as t1
left outer join tblEmp2 as t2
on t1.DeptID = t2.DeptID, t1.MngrID = t2.MngrID, t1.TEMPID = t2.TEMPID, t1.DOJ = t2.DOJ
where t1.DeptID = 3 and t1.DOJ = '2016-12-31' and t2.MngrID is null and t2.TEMPID is null
重要提示:我忘了提及我需要基于DeptName过滤tblEmp2表...即,tblEmp1.DeptID = 3,tblEmp2.DeptName ='XYZ'和tblEmp1.DOJ ='2016-12-31'should成为搜索/过滤条件。
哪一列是您比较的基础? MngrId,TempID还是什么? –
两者,如果有一个是不同的 – Amar