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 に答える