问题如下:
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)