1

我需要写一个查询

如果表中已经存在记录 id,并且具有一些不同值的相同记录 id,那么我必须在表中更新其到期日期,并将具有新值的记录 id 插入表中。如果没有记录 id 不存在,则在表中创建一个新条目。

例如:在一个表中 tmp record_id =101 存在,然后更新所有记录 id='101' 的行的 main_table expiry_date 并从 tmp 插入一个新行到 main_table 否则插入到 main_table。

4

2 回答 2

3

您需要一个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);
于 2013-01-21T06:21:47.057 回答
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...)

如果匹配,您将更新。在任何时候你都会插入。

于 2013-01-21T06:26:23.740 回答