0

我有以下两个表(Tab1 and Tab2),我需要检查 和 的不匹配T1Col3T2Col3。这两个表的链接列T1Col1, T1Col2T2Col2, T2Col2

但是当我运行以下查询时,它没有给出我想要的确切记录

SELECT * FROM Tab1 INNER JOIN Tab2
ON T1Col1 = T2Col1
AND T1Col2 = T2Col2
WHERE T1Col3 <> T2Col3

样本数据

选项卡1

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

选项卡2

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

我怎样才能摆脱突出显示的记录。我认为这是由于匹配重复记录而发生的

干杯

沙巴

4

1 回答 1

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 访问

  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
于 2013-03-08T04:44:49.660 回答