SQL中mergeinto⽤法
sql中update什么意思从备份表中更新字段到正式表中,使⽤ UPDATE 批量更新⼤量的数据,会出现效率低下,有时候甚⾄卡死的情况,后⾯通过使⽤ MERGE INTO 代替 UPDATE 执⾏批量更新,会提升执⾏效率。
MERGE INTO语法如下:
MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
UPDATE
SET col1 = col1_val1,
col2 = col2_val2
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);
其中,table_name 指的是更新的表,using()⾥边的指的是数据来源表/视图/⼦查询结果集,condition指的是连接条件,如果满⾜连接条件,set 字段1=值1,字段2=值2...
如果连接条件不满⾜,则停⽌更新进⾏插⼊。
下⾯我们来举例说明:
先创建被更新表merge_target,并往其中插⼊⼀条数据⽤来更新;
再创建更新表merge_source,⽤来向被更新表插⼊数据;
下⾯准备merge into脚本:
MERGE INTO merge_target target
USING (SELECT B.name,B.age,B.target_id FROM merge_source B) source
ON (target.id=source.target_id)
WHEN MATCHED THEN
UPDATE
SET target.name = source.name,
target.age = source.age
WHEN NOT MATCHED THEN
INSERT(target.name,target.age) VALUES (source.name,source.age);
结果如下:
另:MySql不⽀持merge into 语法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论