我有一个带有新内容的TempTable,现在我想用此插入/更新MainTable。 我需要一个快速的方法,但桌子真的很大。
不是Temptable:
插入(TIME | CUSTOMER | VALUE)如果不存在,则更新VALUE
MainTable:
我找到了一些SQL查询,但这些都很慢。
有谁知道如何用pl / sql做到这一点?
答案 0 :(得分:1)
MERGE声明是您需要:
http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606
SQL> select * from t;
ID N
---- -
1 a
SQL> select * from t1;
ID NA
---- --
1 a1
2 b1
SQL> merge into t using t1 on (t.id = t1.id)
2 when matched then
3 update set t.name = t1.name
4 when not matched then
5 insert (t.id, t.name) values(t1.id, t1.name)
6 /
2 rows merged.
SQL> select * from t;
ID NA
---- --
1 a1
2 b1