UPSERT语法是INSERT与UPDATE的结合体,表示行存在时执行UPDATE语法,不存在时执行INSERT。执行UPSERT的时候必须指定完全的primary key的相关列的信息。UPSERT语法支持批量写入。

语法

UPSERT INTO table_name
              '('columns')' 
              VALUES '(' values ')'
columns ::=  column_name, columns
values  ::=  term, values,'(' values ')'
说明 支持批量写入,指定需要写入的相关列,可以在Values关键字中确定几行数据。

示例

  • 单次写入
    UPSERT INTO dt (p1,p2,c1,c2) VALUES(10, 20, 30, 40);
    UPSERT INTO dt (p1,p2,c2) VALUES(10, 20, 40);   -- 仅写入一行的部分列
    UPSERT INTO dt (p1,p2,c1) VALUES(10, 20, 30);   -- 再写入同一行的其他列
  • 批量写入
    UPSERT INTO dt (p1,p2,c1,c2) VALUES(1,2,3,4), (2,3,4,5), (3,4,5,6);