mergeinto⽤法mysql_SQL中mergeinto⽤法
从备份表中更新字段到正式表中,使⽤ UPDATE 批量更新⼤量的数据,会出现效率低下,有时候甚⾄卡死的情况,后⾯通过使⽤ MERGE INTO 代替 UPDATE 执⾏批量更新,会提升执⾏效率。
MERGE INTO语法如下:
1 MERGE INTOtable_name alias1
2 USING (table|view|sub_query) alias2
3 ON (joincondition)
4 WHEN MATCHED THEN
5 UPDATE
6 SET col1 =col1_val1,
7 col2 =col2_val2
8 WHEN NOT MATCHED THEN
9 INSERT (column_list) VALUES (column_values);
其中,table_name 指的是更新的表,using()⾥边的指的是数据来源表/视图/⼦查询结果集,condition指的是连接条件,如果满⾜连接条件,set 字段1=值1,字段2=值2...
如果连接条件不满⾜,则停⽌更新进⾏插⼊。
下⾯我们来举例说明:
先创建被更新表merge_target,并往其中插⼊⼀条数据⽤来更新;
再创建更新表merge_source,⽤来向被更新表插⼊数据;
下⾯准备merge into脚本:
1 MERGE INTOmerge_target target
2 USING (SELECT B.name,B.age,B.target_id FROMmerge_source B) source
3 ON (target.id=source.target_id)
4 WHEN MATCHED THEN
5 UPDATE
6 SET target.name =source.name,
7 target.age =source.age
8 WHEN NOT MATCHED THEN
9 INSERT(target.name,target.age) VALUES (source.name,source.age);
批量更新sql语句结果如下:
另:MySql不⽀持merge into 语法。
————————————————
版权声明:本⽂为CSDN博主「CtrlC V型程序员」的原创⽂章,遵循CC 4.0 BY-SA版权协议,转载请附上原⽂出处链接及本声明。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。