我有两个表(Tab1 and Tab2)
,我需要检查T1Col3
和T2Col3
的不匹配值。
这两个表的链接列为T1Col1, T1Col2
T2Col2, T2Col2
但是当我运行以下查询时它没有提供我想要的确切记录
SELECT * FROM Tab1 INNER JOIN Tab2
ON T1Col1 = T2Col1
AND T1Col2 = T2Col2
WHERE T1Col3 <> T2Col3
示例数据
TAB1
T1Col1 T1Col2 T1Col3
jkl nnn qoq
efg Aaa wow
efg xxx yoy
abc iii ror
abc fff uou
abc rrr rr3
gdg ppp 123
abc www 234
jkl qqq 336
jkl nnn 888
TAB2
T2Col1 T2Col2 T2Col3
jkl nnn qoq
efg aaa wow
efg xxx yoy
abc fff uou
ABC iii ror1
abc rrr kok
gdg ppp 789
jkl nnn utu
jkl qqq 336
结果
T1Col1 T1Col2 T1Col3 T2Col1 T2Col2 T2Col3
jkl nnn 888 jkl nnn qoq
abc iii ror abc iii ror1
abc rrr rr3 abc rrr kok
gdg ppp 123 gdg ppp 789
jkl nnn 888 jkl nnn utu
jkl nnn qoq jkl nnn utu
以上结果的不需要的记录
jkl nnn 888 jkl nnn qoq
jkl nnn qoq jkl nnn utu
如何摆脱突出显示的记录。我认为这是由于匹配重复记录而发生的
干杯
Shabar
答案 0 :(得分:0)
如果你想删除不匹配的第三列,你只需要第三个和内连接:
SELECT * FROM @Tab1 INNER JOIN @Tab2
ON T1Col1 = T2Col1
AND T1Col2 = T2Col2
AND T1Col3 = T2Col3
<强>更新强>
Select * From
(
Select * From tab1
Except
Select * From tab2
)tbl
Inner Join
(
Select * From tab2
Except
Select * From tab1
)t2
On tbl.T1Col1=t2.T2Col1
And tbl.T1Col2=t2.T2Col2
对于MS Access
Select * From
(
Select t1.* From Tab1 t1
Left Join Tab2 On t1.T1Col1=T2Col1 And t1.T1Col2=T2Col2 And t1.T1Col3=T2Col3
Where T2Col1 Is Null And T2Col2 Is Null And T2Col3 Is Null
)tbl
Inner Join
(
Select t2.* From Tab2 t2
Left Join Tab1 t1 On t1.T1Col1=t2.T2Col1 And t1.T1Col2=t2.T2Col2 And t1.T1Col3=t2.T2Col3
Where t1.T1Col1 Is Null And t1.T1Col2 Is Null And t1.T1Col3 Is Null
)t2
On tbl.T1Col1=t2.T2Col1
And tbl.T1Col2=t2.T2Col2