需要用条件写Query

时间:2013-01-21 06:16:32

标签: sql oracle oracle10g oracle11g

我需要编写一个查询

如果表中已存在记录ID,则具有不同值的相同记录ID为 然后我必须更新表中的到期日期,并将记录ID与新值一起插入表中。 如果不存在记录ID,则在表格中创建一个新条目。

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

2 个答案:

答案 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...)

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