MERGE INTO函数简单来说是UPDATE和INSERT函数的结合体,假设符合条件的源表为alias2,目标表为alias1,如果目标表中存在该行数据则更新相应字段(col1,col2),如果不存在则插入整行数据(column_list)
MERGE INTOtable_namealias1--目标表
USING(tableviewsub_query)alias2--源表
ON(join condition)--指定条件
WHEN MATCHED THEN--目标表中存在数据,则更新update
UPDATEtable_nameSETcol1 = col_val1, col2 = col_val2
WHEN NOT MATCHED THEN--目标表中不存在数据,则插入insert
INSERT(column_list)VALUES(column_values);
如果源表alias2中存在重复数据则需要用到ROW_NUMBER() OVER函数结合PARTITION BY 分组并用ORDER BY进行排序筛选,保证源表alias2中某列数据唯一性,否则通过指定条件查出多行数据后系统不知道更新哪行数据造成报错
MERGE INTO结合定时器还可实现同一个数据库或者不同数据库不同表之间数据定时同步更新:用存储过程封装MERGE INTO函数,再通过定时器调用存储过程执行即可
领取专属 10元无门槛券
私享最新 技术干货