求助:一条有条件的插入SQL

cdliujun 2010-11-11 09:09:13
做批量更新的时候,如果记录存在则修改此记录,如果不存在则新增一条记录。

请问SQL语句如何写?

在线急等,谢谢各位!
...全文
73 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdliujun 2010-11-11
  • 打赏
  • 举报
回复
非常感谢各位。
已解决~
心中的彩虹 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cdliujun 的回复:]
如:
表名:TABLE1
ID NAME DESC MEMO
1 AA CC BB
2 BB DD FF
现在要批量操作SQL语句:
如果有一条记录ID是3,则应该新增一条记录,
如果有一条记录ID是2,则应该是对原ID为2的记录进行修改。

就是这种情况,不知道高人们明白了没有。
[/Quote]
merge into table1 a using(select &id id,.... from dual) b on(a.id=b.id)
when matched then
update set a.col=b.col...
when not matched then
insert(a.id,....) values(b.id....)
--or

create or replace procedure p_dmltb(v_id table1.id%type....)
as
num number;
begin
select count(*) into num from table1 where id=v_id;
if num=0 then
insert into table1 values(v_id......);
else
update table1 set .... where id=v_id;
end if;
commit;
end;
--


cdliujun 2010-11-11
  • 打赏
  • 举报
回复
如:
表名:TABLE1
ID NAME DESC MEMO
1 AA CC BB
2 BB DD FF
现在要批量操作SQL语句:
如果有一条记录ID是3,则应该新增一条记录,
如果有一条记录ID是2,则应该是对原ID为2的记录进行修改。

就是这种情况,不知道高人们明白了没有。
feixianxxx 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cdliujun 的回复:]
只是对一个表操作。
[/Quote]
shuo shuo qing kuang ~
feixianxxx 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhuomingwang 的回复:]
10g或者以上版本用merge into

SQL code

merge into a --要插入修改的表
using b--用来参考的表
on (a.id=b.id)--匹配条件
when matched then
update --update不要set
when not matched then
insert --不要into
[/Quote]为何不要set??
create table mergetest(id number primary key,name varchar(20));
create table newmergetest(id number primary key,name varchar(20));
insert into newmergetest values(1,'first');
insert into newmergetest values(2,'second');

insert into mergetest values(1,'one')
insert into mergetest values(2,'two');
insert into mergetest values(3,'three');

MERGE INTO newmergetest m
using (select * from mergetest) t
ON (m.id = t.id)
WHEN MATCHED THEN
UPDATE SET m.name = t.name
WHEN NOT MATCHED THEN
INSERT VALUES (t.id,t.name) ;

SQL> select * from newmergetest;

ID NAME
---------- --------------------
1 one
2 two
3 three
cdliujun 2010-11-11
  • 打赏
  • 举报
回复
只是对一个表操作。
cdliujun 2010-11-11
  • 打赏
  • 举报
回复
我没有用来参考的表b。

UPDATE也必须要接SET
duolanshizhe 2010-11-11
  • 打赏
  • 举报
回复
恩 用merge into可以实现
  • 打赏
  • 举报
回复
10g或者以上版本用merge into

merge into a --要插入修改的表
using b--用来参考的表
on (a.id=b.id)--匹配条件
when matched then
update --update不要set
when not matched then
insert --不要into

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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