oracle sybase之間聯表更新的區別

wangzh3發表於2006-01-18

當前資料庫中

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章