解决方案 »
- 在查询中怎么做到只要查到结果马上返回?
- 俩sql结果相减问题
- ORACLE 可又做链路到sqlserver2005吗?
- ORA-00909 invalid number of arguments 问题
- 存储过程中的休眠技术??
- 请问如何建立索引?建立索引的原则是什么?
- 有没有oracle和EXCEL的高手?
- 帮帮忙吧!用sqlplus在命令行下插入到表中的数据,在oracle图形话界面怎么看不到啊?但是在命令行下select能看到!非常谢谢!!!
- 关于存储过曾。和INSERT
- 如何让同一个表中两个列的部分值相等?
- 日期字段条件为什么直接传日期变量比TO_DATE()传字符串慢10倍?
- 如何查询用户权限的修改记录
百度下merge into的用法,可能对你有帮助
简单来说,就是:“有则更新,无则插入”
从这句话里,应该可以理解到,merge into 操作一个对象'A'的时候,要有另外一个结果集做为源数据 'B'.
‘merge into’ 将B中的数据与A中的数据按照一定条件'C'进行对比,如果 A中数据满足C条件,则进行update操作,
如果不满足条件 'C',则进行insert操作。(请注意这种对应关系)
merge into,有一个特殊功能,就是当存在记录的时候进行更新操作,不存在数据的时候,进行插入操作。相当于mssql中的
if exists(...)
update table
else
insert into table
语法如下:
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 = col2_val
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);