获取不匹配的记录

时间:2019-05-28 22:17:05

标签: sql sql-server

我有两种看法。两个视图的大多数列都相同。 View1有20列,而View2有22列。 View2具有与View1相同的20列。 现在,我想查询一下这20个公用列中的数据是否相同,如果不相同,我想获取这些记录

View1

Columns FN  LN  EmpID
    a   b   1
    c   d   2

View2

Columns FN  LN  EmpID
    a   b   1
    c   b   2

我想要一个查询,我可以在其中检查View1和View2之间的列值是否存在任何不匹配,以及是否存在不匹配而不是返回该记录的情况。就像查询应返回View2的第二条记录一样,因为它与View1的第二条记录不匹配

2 个答案:

答案 0 :(得分:1)

您可以使用EXCEPT而不是必须对所有列进行JOIN。这将为您提供View1中与View2中不匹配的所有内容:

SELECT [Col1], [Col2], [Col5]
FROM VIEW1
EXCEPT
SELECT [Col1], [Col2], [Col5]
FROM VIEW2

答案 1 :(得分:0)

select *
from view1 a , view2 b
where a.Columns = b.Columns
having ( a.FN  <> b.FN  or a.LN  <> b.LN  or a.EmpID <> b.EmpID )