2023年8月3日发(作者:)
SQL语句mergeinto的⽤法应⽤场景在批量更新⼤量的数据时,使⽤Insert 和Update操作会出现效率低下,甚⾄卡死的情况。改⽤ MERGE INTO 代替执⾏批量更新,会提升执⾏效率。merge into将源数据(来源于实际的表,视图,⼦查询)更新或插⼊到指定的表中(必须实际存在),好处是避免了多个insert 和update操作。merge into是⼀个⽬标性明确的操作符,不允许在⼀个merge 语句中对相同的⾏insert或update操作。这个语法仅需要⼀次全表扫描就完成了全部⼯作,执⾏效率要⾼于insert+update,尤其是在⼤数据量⾯前,效率越明显。语法语法如下:MERGE INTO table_name alias1USING (table|view|sub_query) alias2ON (join condition)WHEN MATCHED THENUPDATESET col1 = col1_val1, col2 = col2_val2WHEN NOT MATCHED THENINSERT (column_list) VALUES (column_values);其中,table_name 指的是更新的表,using()⾥边的指的是数据来源表/视图/⼦查询结果集,condition指的是连接条件。如果满⾜连接条件,则更新字段;如果连接条件不满⾜,则停⽌更新进⾏插⼊。举例table_a : 计划⾦额表table_b : 调整表table_c : 调整⾦额表想要根据调整id,将调整⾦额累加到计划⾦额表中。⼀次更新当年12个⽉。MERGE INTO table_a t1 USING ( SELECT _id, _money + _money adjust_money, _money + _money all_money FROM table_a m LEFT JOIN table_b a ON _id = _id LEFT JOIN table_c d ON _id = _id WHERE _id = 5 AND _code = '100101' AND = ) t2 ON (_id = _id)WHEN matched THEN UPDATESET _money = _money, _money = _money
2023年8月3日发(作者:)
SQL语句mergeinto的⽤法应⽤场景在批量更新⼤量的数据时,使⽤Insert 和Update操作会出现效率低下,甚⾄卡死的情况。改⽤ MERGE INTO 代替执⾏批量更新,会提升执⾏效率。merge into将源数据(来源于实际的表,视图,⼦查询)更新或插⼊到指定的表中(必须实际存在),好处是避免了多个insert 和update操作。merge into是⼀个⽬标性明确的操作符,不允许在⼀个merge 语句中对相同的⾏insert或update操作。这个语法仅需要⼀次全表扫描就完成了全部⼯作,执⾏效率要⾼于insert+update,尤其是在⼤数据量⾯前,效率越明显。语法语法如下:MERGE INTO table_name alias1USING (table|view|sub_query) alias2ON (join condition)WHEN MATCHED THENUPDATESET col1 = col1_val1, col2 = col2_val2WHEN NOT MATCHED THENINSERT (column_list) VALUES (column_values);其中,table_name 指的是更新的表,using()⾥边的指的是数据来源表/视图/⼦查询结果集,condition指的是连接条件。如果满⾜连接条件,则更新字段;如果连接条件不满⾜,则停⽌更新进⾏插⼊。举例table_a : 计划⾦额表table_b : 调整表table_c : 调整⾦额表想要根据调整id,将调整⾦额累加到计划⾦额表中。⼀次更新当年12个⽉。MERGE INTO table_a t1 USING ( SELECT _id, _money + _money adjust_money, _money + _money all_money FROM table_a m LEFT JOIN table_b a ON _id = _id LEFT JOIN table_c d ON _id = _id WHERE _id = 5 AND _code = '100101' AND = ) t2 ON (_id = _id)WHEN matched THEN UPDATESET _money = _money, _money = _money
发布评论