我需要写一个查询
如果表中已经存在记录 id,并且具有一些不同值的相同记录 id,那么我必须在表中更新其到期日期,并将具有新值的记录 id 插入表中。如果没有记录 id 不存在,则在表中创建一个新条目。
例如:在一个表中 tmp record_id =101 存在,然后更新所有记录 id='101' 的行的 main_table expiry_date 并从 tmp 插入一个新行到 main_table 否则插入到 main_table。
您需要一个Merge 语句和一个插入:
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);
请检查这个:
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...)
如果匹配,您将更新。在任何时候你都会插入。