oracle merge into与sqlserver merge into 比较
2014-01-10 16:01
435 查看
merge into:
在两个表之间,根据与源表联接的结果,对目标表执行插入、更新或删除操作。
Oracle在9i引入了merge into命令,SQL Server 2008也引入merge into。
不多说了,实例对比一下吧!
oracle merge into:
[sql] view plaincopy
/*
drop table a;
drop table b;
*/
create table a (aid integer null,aname varchar2(10) null);
create table b (bid integer null,bname varchar2(10) null);
insert into a values(1,'aname1');
insert into a values(3,'aname3');
insert into a values(4,'aname4');
insert into b values(1,'bname1');
insert into b values(2,'bname2');
insert into b values(3,'bname3');
merge into a
using b
on (a.aid=b.bid)--必须加括号
when matched then
update set a.aname=b.bname where b.bid>1 --可加条件
when not matched then
insert values(b.bid,b.bname)
select * from a;
select * from b;
查看A表结果:
1. 条件id>1 不更新
2. 符合条件,更新目标表
3. 注意:目标表中,此行 aid<>bid,保留了下来
4. 目标表中不存在id=2的,插入到目标表
sqlserver2008 merge into:
[sql] view plaincopy
/*
drop table a;
drop table b;
*/
create table a (aid int null,aname varchar(10) null);
create table b (bid int null,bname varchar(10) null);
insert into a values(1,'aname1');
insert into a values(3,'aname3');
insert into a values(4,'aname4');
insert into b values(1,'bname1');
insert into b values(2,'bname2');
insert into b values(3,'bname3');
merge into a
using b
on a.aid=b.bid --可不用括号
when matched then
update set a.aname=b.bname
when not matched then
insert values(b.bid,b.bname)
when not matched by source then --在a表中无操作的记录可执行删除
delete; --必须以分号结束
select * from a;
select * from b;
查看A表结果:
看,匹配的完全更新到A表!
oracle merge into 和 sqlserver 2008 merge into 的区别:
1. oracle在连接条件 on(a.aid=b.bid) 必须加括号,sqlserver 可以不用,也可以用。
2. oracle中目标表不参与的记录行只能保留,sqlserver 还可以执行删除。
3. oracle 在匹配条件中可以进一步添加更新的筛选条件,sqlserver不能增加条件约束。
4. oracle在语句结尾可加或不加分号,sqlserver 必定要在语句结束后添加分号“;”。
引用自:/article/3641010.html
在两个表之间,根据与源表联接的结果,对目标表执行插入、更新或删除操作。
Oracle在9i引入了merge into命令,SQL Server 2008也引入merge into。
不多说了,实例对比一下吧!
oracle merge into:
[sql] view plaincopy
/*
drop table a;
drop table b;
*/
create table a (aid integer null,aname varchar2(10) null);
create table b (bid integer null,bname varchar2(10) null);
insert into a values(1,'aname1');
insert into a values(3,'aname3');
insert into a values(4,'aname4');
insert into b values(1,'bname1');
insert into b values(2,'bname2');
insert into b values(3,'bname3');
merge into a
using b
on (a.aid=b.bid)--必须加括号
when matched then
update set a.aname=b.bname where b.bid>1 --可加条件
when not matched then
insert values(b.bid,b.bname)
select * from a;
select * from b;
查看A表结果:
1. 条件id>1 不更新
2. 符合条件,更新目标表
3. 注意:目标表中,此行 aid<>bid,保留了下来
4. 目标表中不存在id=2的,插入到目标表
sqlserver2008 merge into:
[sql] view plaincopy
/*
drop table a;
drop table b;
*/
create table a (aid int null,aname varchar(10) null);
create table b (bid int null,bname varchar(10) null);
insert into a values(1,'aname1');
insert into a values(3,'aname3');
insert into a values(4,'aname4');
insert into b values(1,'bname1');
insert into b values(2,'bname2');
insert into b values(3,'bname3');
merge into a
using b
on a.aid=b.bid --可不用括号
when matched then
update set a.aname=b.bname
when not matched then
insert values(b.bid,b.bname)
when not matched by source then --在a表中无操作的记录可执行删除
delete; --必须以分号结束
select * from a;
select * from b;
查看A表结果:
看,匹配的完全更新到A表!
oracle merge into 和 sqlserver 2008 merge into 的区别:
1. oracle在连接条件 on(a.aid=b.bid) 必须加括号,sqlserver 可以不用,也可以用。
2. oracle中目标表不参与的记录行只能保留,sqlserver 还可以执行删除。
3. oracle 在匹配条件中可以进一步添加更新的筛选条件,sqlserver不能增加条件约束。
4. oracle在语句结尾可加或不加分号,sqlserver 必定要在语句结束后添加分号“;”。
引用自:/article/3641010.html
相关文章推荐
- oracle merge into与sqlserver merge into 比较
- sql server merge into 与update 批量更新1 百万测试数据的性能比较
- Oracle 9i与MS SQL Server 2000之比较连载二:重要概念的对比
- SqlServer/Oracle函数比较
- Oracle 9i与MS SQL Server 2000之比较连载三:关于Oracle Manager Server与MS SQL 的Enetrprise manager
- Oracle 9i与MS SQL Server 2000之比较连载四:关于Oracle的Sys、System的用户与MS SQL 的master的比较
- sqlserver merge into
- ORACLE PL/SQL与SQL SERVER T-SQL一些比较
- 五大主流数据库比较 (DB2 Oracle MySQL SyBase SQLServer) 转
- ORACLE PL/SQL与SQL SERVER T-SQL一些比较【经典】
- Oracle 9i与MS SQL Server 2000之比较
- ORACLE PL/SQL与SQL SERVER T-SQL一些比较
- Oracle 9i与MS SQL Server 2000之比较连载五
- SQLSERVER ORACLE 开发比较
- 两台不同的数据库中的表的操作方法(oracle和sql+server的比较)
- Oracle SQL 1 : Oracle MERGE INTO Statement
- ORACLE PL/SQL与SQL SERVER T-SQL一些比较【经典】
- 数据库比较 (DB2 Oracle MySQL SyBase SQLServer)
- SQL-Server之MERGE INTO
- 五大主流数据库比较 (DB2 Oracle MySQL SyBase SQLServer)