SQL-如果不存在则插入,否则更新

SQL-如果不存在则插入,否则更新,sql,oracle,merge,sql-insert,Sql,Oracle,Merge,Sql Insert,我有一个诱人的新内容,现在我喜欢插入/更新这个主表。 我需要一个快速的方法,但是桌子真的很大 诱人的: 时间|客户|价值 时间戳字符串浮点 如果不存在,则插入(时间|客户|值),否则为更新值 主表: 时间|客户|价值 时间戳字符串浮点 我发现了一些SQL查询,但是它们太慢了 有人知道如何使用pl/sql实现这一点吗?合并语句是您需要的: 查看MERGE语句 SQL> select * from t; ID N

我有一个诱人的新内容,现在我喜欢插入/更新这个主表。 我需要一个快速的方法,但是桌子真的很大

诱人的:

  • 时间|客户|价值
  • 时间戳字符串浮点
如果不存在,则插入(时间|客户|值),否则为更新值

主表:

  • 时间|客户|价值
  • 时间戳字符串浮点
我发现了一些SQL查询,但是它们太慢了


有人知道如何使用pl/sql实现这一点吗?

合并语句是您需要的:


查看
MERGE
语句
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