问题:
已知两张表TA、TB,这两张表的表结构完全相同。现在有这样的要求,TA是根据要求按一定频率抽取的数据,TB是保存发生变化的表。每次抽取TA表,都会比较TA、TB表,看这两个表中是否存在完全一样的数据项值。
例子:
TA、TB的主键是CA1,则使用TA和TB表中的其他字段值比较(on TA.CA1=TB.CA1).eg
Merge TB
using TA
on (TA.CA1=TB.CA1)
when matched then
...(比较其他字段是否相同,存在不同的记录更新记录)
when not matched then
...(插入新的记录)
分析:
当比较其他字段是否相同时,存在这样的几种情况:
TA.CA2 TB.CA2 操作
null null 不执行
'a' null A覆盖B
null 'a' 不执行
'a' 'a' 不执行
'b' 'a' A覆盖B
解答:
对于这种情况
我们可以使用两个函数结合来操作
update set
TA.ca2 = TB.ca2,
TA.ca3 = TB.ca3,
TA.ca4 = TB.ca4,