日期:2014-05-18  浏览次数:20543 次

两个表的结构相同,表数据有些有相同,如何找出不相同的数据,还有不同在哪里
两个表的结构相同,表数据有些有相同,如何找出不相同的数据,还有不同在哪里

表1 表2

标识列 ID(唯一) 列1 列2 列3 标识列 ID(唯一) 列1 列2 列3
1 01 值0101 值0102 值0103 1 01 值0101 值0102 值0103 列1,2,3相同
2 02 值0101 值0102 值0103 2 02 值0101 值0102 值0101 列3不同
3 03 值0101 值0102 值0103 3 03 值0101 值0101 值0101 列2,3不同
4 05 值0101 值0102 值0103 1 04 值0101 值0101 值0101 全部不同

例如:
  ID为02,如何得到列3值的不同,相对于表1,列3具有什么变化

  ID为03,如何得到列2,3值的不同,相对于表1,列2,3具有什么变化

------解决方案--------------------
第一个:
select T1.ID,T1.列3,T2.列3
from T1,T2
where T1.ID = T2.ID
and 列3 <> 列3
第二个:
select T1.ID,T1.列2,T2.列2,T1.列3,T2.列3
from T1,T2
where T1.ID = T2.ID
and (列2 <> 列2 or 列3 <> 列3)
------解决方案--------------------
SQL code

select * from 表1
except 
select * from 表2
--表1中不存在于表2的记录

select * from 表2
except 
select * from 表1
--表2中不存在于表1的记录

------解决方案--------------------
Select T.ID, TC0 As '不同的列', T.TC1, T.TC2
From (
Select T1.ID, 1 as TC0, T1.C1 TC1, T2.C1 TC2 From T1, T2 Where T1.ID = T2.ID And T1.C1<>T2.C1
Union
Select T1.ID, 2 as TC0, T1.C2, T2.C2 From T1, T2 Where T1.ID = T2.ID And T1.C2<>T2.C2
Union
Select T1.ID, 3 as TC0, T1.C3, T2.C3 From T1, T2 Where T1.ID = T2.ID And T1.C3<>T2.C3
) T
Order By T.ID, T.TC0