2014-04-02 49 views
1

我有一個帶有新內容的TempTable,現在我想用此插入/更新MainTable。 我需要一個快速的方式,但表是真的很大。SQL - 插入如果不存在其他更新

不是Temptable:

  • TIME |客戶| VALUE
  • 時刻字符串浮動

插入(TIME |客戶| VALUE)如果不存在其他更新值

MainTable:

  • TIME |客戶| VALUE
  • 時刻字符串浮動

我已經發現了一些SQL查詢,但這些都將放緩。

有沒有人知道我可以用pl/sql做到這一點?

+6

檢查出來的'MERGE'聲明 –

回答

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  
+0

非常感謝你! – Ripper121

相關問題