ITPub博客

首页 > 数据库 > Oracle > oracle sybase之间联表更新的区别

oracle sybase之间联表更新的区别

原创 Oracle 作者:wangzh3 时间:2006-01-18 16:54:26 0 删除 编辑

当前数据库中

sybase 和mss的算是一派,oracle自成一派。所以联表更新语句上有些不同。

今天有人来问我一个问题,我就demo了一下。

[@more@]

create table A1
(
id int,
v1 int,
v2 int
)
;

表一,id是主键,放到oracle执行的时候把int改成number(5)
create table A2
(
id int,
v1 int,
v2 int
)
;

表二,id是主键,放到oracle执行的时候把int改成number(5)

insert into A1 values(1,1,1);
insert into A1 values(2,2,2);
insert into A1 values(3,3,3);
insert into A1 values(4,4,4);

insert into A2 values(1,11,11);
insert into A2 values(2,22,22);
insert into A2 values(3,33,33);
insert into A2 values(5,11,11);
insert into A2 values(6,22,22);
insert into A2 values(7,33,33);

要把表A1的数据如果id和A2的相同,则更新A1的V1和V2分别到对应的A2表的V1和V2字段,如果A2中没有的,则把数据从A1插入到A2中。

如果两者的ID相同,则把A1表的对应字段更新到A2表中,语句如下:

update A2
set A2.v1=A1.v1,
A2.v2=A1.v2
from A1,A2
where A1.id=A2.id

把A1表有而A2表没有的数据插入到A2中去。

insert into A2
select * from A1 where A1.id not in (select A2.id from A2)

对于在oracle数据库中

如果两者的ID相同,则把A1表的对应字段更新到A2表中,语句就是不一样的了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/47869/viewspace-813443/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    301
  • 访问量
    10831679