Merge和using搭配用于特别是BI上数据统计和分析上 比如要求子表中没有的数据那么父表中就要删除对应的数据 保证子表和父表的数据对应 如果按照常规的做法是 跑个作业然后通过游标/表值函数/临时表等等循环的获取数据然后更新父表 这样是很浪费效率的 这时Merge派上用场了
原始数据:
select * from chartinfo;
select * from UserInfo;
MERGE INTO UserInfo uUSING chartinfo cON u.UserId = c.UserIdWHEN MATCHED AND u.UserName = c.UserName THEN UPDATE SET u.lastUpdate = c.LastUpdateWHEN NOT MATCHED --为not matched时不能为update(没有匹配成功 当然不能update了) THEN INSERT(UserName, Sex) VALUES( 'ZhangZhao', 'b' );
使用Merge查询之后:
select * from chartinfo;
select * from UserInfo;