Oracle中,要实现相同的功能,要用到Merge into来实现(Oracle 9i引入的功能),其语法如下:
MERGE INTO table_name alias1 USING (table|view|sub_query) alias2 ON (join condition) WHEN MATCHED THEN UPDATE table_name SET col1 = col_val1, col2 = col_val2 WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values);
merge into 的原理:
在alias2中select 出来的数据,每一条都跟alias1进行on (join condition )的比较,如果匹配,就进行更新操作(update),
如果不匹配,就进行插入操作(insert),
还有一句话,特别经典:“在一个同时存在Insert和Update语法的Merge.语句中,总共Insert/update记录数,就是Using 语句中Alias2的记录数。”
Insert和update的记录数 一定小于或等于Alias2中的记录数