当前位置: 代码迷 >> Oracle管理 >> 比对两张表数据,判断哪位高手比哪位高手多,记录新表
  详细解决方案

比对两张表数据,判断哪位高手比哪位高手多,记录新表

热度:200   发布时间:2016-04-24 04:10:07.0
比对两张表数据,判断谁比谁多,记录新表
问题如下:

      A表,B表,表结构相同。比较两张表差异后,往C表插入比兑后的数据,C表有多一个flag字段

flag=1  A表数据比B表数据少的
flag=2  A表数据比B表数据多的
flag=3  A表中的主键与B表中的主键相同时,其它字段数据不相同的

  请问如何能判断正确后,将flag值插入C表中?

------解决思路----------------------
使用intersect和minus求交集或差集


--A比B少的
select id from B
MINUS
select id from A
--A比B多的
select id from A
MINUS
select id from B
--关键字相同,其他字段存在不同的
with T AS(
select id from A
intersect
select id from B)
SELECT * FROM A WHERE ID IN (SELECT ID FROM T)
MINUS
SELECT * FROM B WHERE ID IN (SELECT ID FROM T)

------解决思路----------------------
A比B少的

select t2.*, 1 flag
from a t1,b t2
where t1.id(+)=t2.id
and t1.id is null;

A比B多的

select t1.*, 2 flag
from a t1,b t2
where t1.id=t2.id(+)
and t2.id is null;

A和B id相同其他字段值不同的

select t1.*,3 flag
from a t1,b t2
where t1.id=t2.id
and( t1.字段1 !=t2.字段1 or t1.字段2 !=t2.字段2 or t1.字段3 !=t2.字段3)
  相关解决方案