SQL中合并使用的详细说明

合并报表是一个SQL语句,在SQL服务器不可用,Oracle数据库和MySQL和postgresql.merge是一种新的Oracle9i的语法,用于合并更新和插入语句。根据合并报表,根据一个表的连接条件(原始数据表、源表)或子查询,我们查询另一个表(目标表,目标表)。在连接条件匹配时执行更新,而插入则无法匹配。此语法只需要一个完整的表扫描来完成整个工作,并且执行效率高于插入+更新。

合并主要用于两个表之间的关联操作。



合并:在Oracle中



从Oracle 9i支持合并使用,10g的完善




首先创建一个表(id_ count_整数,整数);
插入一个值(1,3);
插入一个值(3,6);
创建表格B(id_ count_整数,整数);
插入b值(1,7);
插入b值(2,4);
合并成一个
使用B
在(张_ = b.id_)
当匹配时
更新= b.count_ + a.count _ count_ / * * / count_属于表命名的关注
当不匹配时
插入值(b.id_,b.count_);
承诺;
从中选择*;




结果uff1a



id_ count_

一百一十

三十六

二十四



SQL Server 2008开始支持合并:



有两个相同的表:test1,test2




创建表的试验
(ID int,名字varchar(20))

创建表test2
(ID int,名字varchar(20))

插入test1(ID、名称)
值(1,'boyi55),(2,'51cto),(3,'bbs),(4,'fengjicai),(5,'alis)
插入test2(ID、名称)
值(1,'boyi),(2,'51cto)




同步test1为test2,没有数据的插入,和现有的数据更新


合并test2 T要更新目标表
使用test1的源表
在t.id = s.id --更新条件(即主键)
匹配时——如果主键匹配、更新
然后更新t.name = s.name
如果未匹配,则插入值(id、name);插入目标主机主未知主键。此语句必须以分号结束。


运行以下查询以查看更新结果


选择张,a.name作为name_1,b.name作为name_2从test1作为
在张=数据




我name_1 name_2

离开

1 boyi55 boyi55

2 51cto 51cto

3 BBS论坛

4 fengjicai fengjicai

5 ALIS ALIS