ORCAL Merge into用法总结

简单的说就是,判断表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据。  

有一个表T,有两个字段a、b,我们想在表T中做Insert/Update,如果条件满足,则更新T中b的值,否则在T中插入一条记录。在Microsoft的SQL语法中,很简单的一句判断就可以了,SQL Server中的语法如下: 

用法:

ifexists(select1from T where T.a=‘1001‘ )

update Tset T.b=2Where T.a=‘1001‘

else

insertinto T(a,b)values(‘1001‘,2)

orcal对应写法

merge into 目标表 a

using 源表 b

on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)

when matched then update set a.更新字段=b.字段

when not macthed then insert into a(字段1,字段2……)values(值1,值2……)

实例:

sel server :

insert into scheduler_chain_proc select 3, 650, 60 
where not exists(select processId from scheduler_chain_proc where ProcessId = 60);

orcar:

merge into scheduler_chain_proc using dual on (ProcessId = 60)
when not matched then
insert values (3, 650, 60)

原文地址:https://www.cnblogs.com/luquanjian/p/10341246.html

时间: 2024-10-31 20:11:09

ORCAL Merge into用法总结的相关文章

SQL2008中Merge的用法

在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge [into] [目标表]using <源表>on 条件when matched 操作 when not matched 操作; 首先,请参看两张表 TableThis和TableThat: 可以看到,这两张表中的内容还是比较简单的,两张表通过一个tbThisID进行主键和外键的关联,那么如如果想实

SQL2008中Merge的用法(轉載)

在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge [into] [目标表]using <源表>on 条件when matched 操作 when not matched 操作; 首先,请参看两张表 TableThis和TableThat: 可以看到,这两张表中的内容还是比较简单的,两张表通过一个tbThisID进行主键和外键的关联,那么如如果想实

SQL2008中Merge的用法(转)

在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge [into] [目标表]using <源表>on 条件when matched 操作 when not matched 操作; 可以看到,这两张表中的内容还是比较简单的,两张表通过一个tbThisID进行主键和外键的关联,那么如如果想实现二者之间的数据同步,该如何进行呢,请看具体的Merge代码:

Oracle中Merge into用法总结 (转载)

Oracle中Merge into用法总结 (出处:http://www.cnblogs.com/dongsheng/p/4384754.html) 起因: 前段时间,因为涉及到一张表的大数据操作,要同时进行增删改,我跟师傅想了很多优化办法,结果都不尽人意.刚开始用的就是原始算法,先更新现有记录,再插入满足要求的其他记录,最后再删除多余记录,但是少量数据还可以,10W条数据就不行了,前台的超时时间是60s,远远无法满足要求.之后又想办法将任务进行拆分,根据每条记录流水号尾字符不同进行拆分,用多个

ORACLE 10 g的 merge into 用法

在Oracle 10g之前,merge语句支持匹配更新和不匹配插入2种简单的用法,在10g中Oracle对merge语句做了增强,增加了条件选项和DELETE操作.下面我通过一个demo来简单介绍一下10g中merge的增强和10g前merge的用法. 参考Oracle 的SQL Reference 下面我在一下环境中做一个测试看看 创建表subs  和 acct create table subs( msid number(9), ms_type char(1), areacode numbe

pandas-16 pd.merge()的用法

pandas-16 pd.merge()的用法 使用过sql语言的话,一定对join,left join, right join等非常熟悉,在pandas中,merge的作用也非常类似. 如:pd.merge(df1, df2) 找到一个外键,然后将两条数据合并成一条. 直接上例子: import numpy as np import pandas as pd from pandas import Series, DataFrame df1 = DataFrame({'key':['X', 'Y

Orcal语法Merge into用法

Orcal语法 Merge into 1.语法介绍 MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT. 优点:这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE. 2.语法格式 Merge into 你的表名  [表别名] Using(关联表) [表别名] on (关联条件) WHEN MATCHE

SQLServer之merge函数用法

MERGE 目标表 USING 源表 ON 匹配条件 WHEN MATCHED THEN 语句 WHEN NOT MATCHED THEN 语句; 其中最后语句分号不可以省略,且源表既可以是一个表也可以是一个子查询语句 WHEN NOT MATCHED BY TARGET表示目标表不匹配,BY TARGET是默认的,所以上面我们直接使用WHEN NOT MATCHED THEN WHEN NOT MATCHED BY SOURCE表示源表不匹配,即目标表中存在,源表中不存在的情况. 主要用法:

Oracle 的merge into 用法

1.merge into的用途 Merge是一个非常有用的功能,与DB2中的merge into功能几乎一样,与Mysql里的insert into on duplicate key也很类似.MERGE INTO 是Oracle 9i以后才出现的新的功能.简单来说可以是一个“有则更新,无则插入”的功能. 通过Merge into你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的,Merge into可以实现