在mysql中有这样的语法
REPLACE INTO subscribers
VALUES (2, 'John Brown', '[email protected]');
第一个字段是主键。
实现了这样的功能,如果第一个参数的值,在subscribers表中不存在,就添加记录;存在就替换记录。oracle有没有类似的语法?
REPLACE INTO subscribers
VALUES (2, 'John Brown', '[email protected]');
第一个字段是主键。
实现了这样的功能,如果第一个参数的值,在subscribers表中不存在,就添加记录;存在就替换记录。oracle有没有类似的语法?
update tablename set(id,name,addr)=(1,2,3) where id=1 and name =2 and addr=3;
(SELECT KBS.NUFUS_MUHTARLIK.MERNIS_NO FROM KBS.NUFUS_MUHTARLIK WHERE MERNIS_NO='46603404838')
BEGIN
UPDATE KBS.NUFUS_MUHTARLIK SET CILT='028-01',SAYFA='25',KUTUK='6'
END ELSE BEGIN
INSERT INTO KBS.NUFUS_MUHTARLIK (MERNIS_NO,CILT,SAYFA,KUTUK) VALUES ('46603404838','028-01','25','6') END;
USING (SELECT course_name, period,
course_hours
FROM course_updates) cu
ON (c.course_name = cu.course_name
AND c.period = cu.period)
WHEN MATCHED THEN
UPDATE
SET c.course_hours = cu.course_hours
WHEN NOT MATCHED THEN
INSERT (c.course_name, c.period,
c.course_hours)
VALUES (cu.course_name, cu.period,
cu.course_hours);
oracle 的merge 操作 需要有 源数据(table, view,query) 和目标数据表。当然也可以士同一张表,这样 merge 的功能就和楼主说的replace 一样了。
而使用merge,要先将数据放到一个表中,然后再执行merge。不知道我的理解对不对,
如果是这样,麻烦了。
我是希望插入或者更新的操作用一条sql完成。