merge用法

saintparadise 2011-10-11 04:36:08
merge 一次可以同时操作两个表(同时插入或更新两个表里的数据)吗? 谢谢!
...全文
181 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
一元 2011-10-26
  • 打赏
  • 举报
回复
有吗??
路过学习……
xiaoyu871225 2011-10-26
  • 打赏
  • 举报
回复
正解
[Quote=引用 9 楼 northgale 的回复:]
merge into a
using b
on 。。。。
when matched then
update set ..... --这里只能对a update
when not matched then
insert ......-- 这里只能对a insert
[/Quote]
Northgale 2011-10-20
  • 打赏
  • 举报
回复
merge into a
using b
on 。。。。
when matched then
update set ..... --这里只能对a update
when not matched then
insert ......-- 这里只能对a insert
zhoulirong14 2011-10-19
  • 打赏
  • 举报
回复
好像只能同时对一个表吧,
NLP爱好者 2011-10-18
  • 打赏
  • 举报
回复
学习了。。。。。。。。。路过
Northgale 2011-10-18
  • 打赏
  • 举报
回复
你看看merge的语法就知道了,一个是源另一个是目标,只有两个表,哪来的第三张表?
Rotel-刘志东 2011-10-12
  • 打赏
  • 举报
回复
不可以同时操作两个表的。只能对一个insert、update、delete等操作的。
xiaobn_cn 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 saintparadise 的回复:]
merge 一次可以同时操作两个表(同时插入或更新两个表里的数据)吗? 谢谢!
[/Quote]

不可以,merge的正确用法是可以对1个表同时进行插入、删除、更新中的多种操作。
秋雨飘落 2011-10-12
  • 打赏
  • 举报
回复
insert可以实现
http://blog.csdn.net/zftang/article/details/6208357
insert all
when id <10 then
into test1(id,name,sex,cj)
when id >10 and id<50 then
into test2(id,name,sex,cj)
when id >50 and id<1000 then
into test3(id,name,sex,cj)
select id,name,sex,cj from test

---涛声依旧--- 2011-10-12
  • 打赏
  • 举报
回复
-- Create table
create table NAMESTU
(
ID NUMBER(10),
NAGE NUMBER(10)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64
minextents 1
maxextents unlimited
);
create table NAMESTU1
(
ID NUMBER(10),
KK NUMBER(10)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64
minextents 1
maxextents unlimited
);
merge into namestu a
using dual
on (a.id = 223)
when matched then
update set a.nage = 2
when not matched then
INSERT values(223,1)
;

merge into namestu a
using dual
on (a.id = 224)
when matched then
update set a.nage = 0
when not matched then
INSERT (ID) values(223)
;

MERGE INTO NAMESTU A
USING NAMESTU1 B
ON (A.ID=B.ID)
WHEN MATCHED THEN
UPDATE SET A.NAGE=B.KK
WHEN NOT MATCHED THEN
INSERT VALUES(225,10)
;
SELECT * FROM namestu;
opps_zhou 2011-10-11
  • 打赏
  • 举报
回复
这应该是不可以的

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧