频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Oracle9i中MERGE的用法

来源: 作者: 出处:巧巧读书 2007-01-18 进入讨论组

 語法:

MERGE [hint] INTO [schema .] table [t_alias] USING [schema .] { table | view | subquery } [t_alias] ON ( condition ) WHEN MATCHED THEN merge_update_clause WHEN NOT MATCHED THEN merge_insert_clause;


ORACLE 9I中加入了MERGE

語法:

MERGE [hint] INTO [schema .] table [t_alias] USING [schema .] { table | view | subquery } [t_alias] ON ( condition ) WHEN MATCHED THEN merge_update_clause WHEN NOT MATCHED THEN merge_insert_clause;
構建測試數據表
create table tj_test
(id number,
name varchar2(20),
age number)
向表中插入數據

insert into tj_test
values
(1,'jan',23)


insert into tj_test
values
(2,'kk',22)


insert into tj_test
values
(3,'joe',27)


select * from tj_test
1 jan 23

2 kk 22

3 joe 27


構建另一新表
create table tj_test1 as select * from tj_test where 1=0

插入一筆數據

insert into tj_test1
values
(1,'jlk',23)

select * from tj_test1
1 jkl 23 --注意,這裡的NAME字段中的值是jkl

使用MERGE,實現有則更新,無則插入
merge into tj_test1 tt1
using tj_test tt
on (tt1.id=tt.id)
when matched then
update set
tt1.name=tt.name,
tt1.age=tt.age
when not matched then
insert values(
tt.id,
tt.name,
tt.age)

查詢tj_test1表(對比原來表中的數據,更新了ID=1 ROW中字段NAME同時,多出兩筆新數據)

select * from tj_test1

1 jan 23 --這裡的原有jkl值被更新

3 joe 27 --原來表中沒有的插入

2 kk 22 --原來表中沒有的插入

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1480596

打开: http://www.qqread.com/oracle/2007/01/b293845.html 更多文章 更多内容请看Oracle 10g基础应用专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章