我需要编写一个查询
如果表中已存在记录ID,则具有不同值的相同记录ID为 然后我必须更新表中的到期日期,并将记录ID与新值一起插入表中。 如果不存在记录ID,则在表格中创建一个新条目。
例如:在表tmp中,record_id = 101存在,然后更新记录id ='101'的所有行的main_table expiry_date,并从tmp向main_table插入一个新行,否则插入main_table。
答案 0 :(得分:3)
您需要Merge statement和插入内容:
merge into your_table t
using(select 5 as id, sysdate as expiry_date from source where coditions) S
on(s.id = t.id)
when matched then update t.expiry_date = s.expiry_date;
insert into your_table t
values (5 , sysdate);
答案 1 :(得分:1)
请检查一下:
MERGE INTO mytable b
USING (SELECT * from mytable where id = 10) a
ON b.id = a.id
WHEN MATCHED THEN UPDATE SET b.expirydate = a.expirydate
;
INSERT (id, col1, col2...) VALUES (a.id, col1, col2...)
如果匹配,您将更新。在任何时候你都会插入。