网站推广.NET

网站推广.NET

merge into用法

来源:互联网

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

有一个表T,有两个字段a、b,我们想在表T中做insert/update,如果条件满足,则更新T中b的值,否则在T中插入一条记录。在Microsoft的SQL语法中,很简单的一句判断就可以了,SQL Server中的语法如下:(推荐学习:MySQL视频教程)  

if exists(select 1 from T where T.a='1001' )update T set T.b=2 Where T.a='1001'elseinsert into T(a,b) values('1001',2);

但是很明显这个语法对于SQL只能更改一条语句,并且Oracle不能使用.所以就有了Merge into(Oracle 9i引入的功能)语法 

merge into 目标表 a using 源表 b on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)   when matched then update set a.更新字段=b.字段 when  not matched then insert into a(字段1,字段2……)values(值1,值2……)

"在一个同时存在insert和update语法的Merge语句中,总共insert/update的记录数,就是Using语句中"源表"的记录数"。

 源表b可能是一张表结构不同于a的表,有可能是一张构建相同表结构的临时表,也有可能是我们自己组起来的数据.

更多MySQL相关技术文章,请访问MySQL数据库图文教程栏目进行学习!

merge into的用法