描述

该语句用于替换一个或多个记录到表。如果没有主键或唯一键冲突则插入记录,如果存在冲突则先删除冲突记录再插入新的记录。

格式

  1. replace_stmt:
  2. REPLACE [INTO] table_factor [PARTITION (partition_name_list)] [(column_name_list)]
  3. {VALUES | VALUE} column_value_lists;
  4. partition_name_list:
  5. partition_name [, partition_name ...]
  6. column_name_list:
  7. column_name [, column_name ...]
  8. column_value_lists:
  9. (column_value_list) [, (column_value_list) ...]
  10. column_value_list:
  11. column_value [, column_value ...]
  12. column_value:
  13. {expression | DEFAULT}

参数解释

参数

描述

table_factor

替换的表名

column_name_list

指定替换数据的列

partition_name_list

替换表指定的分区名

示例

本示例基于如下表定义。

  1. OceanBase(admin@test)>create table test (c1 int primary key, c2 varchar(40));
  2. Query OK, 0 rows affected (0.23 sec)
  1. 替换 test 表中的行一和行二的值分别为 ‘hello alibaba’ 和 ‘hello ob’。
  1. OceanBase(admin@test)>REPLACE INTO test VALUES (1, 'hello alibaba'),(2, 'hello ob');
  2. Query OK, 2 rows affected (0.01 sec)
  3. Records: 2 Duplicates: 0 Warnings: 0
  1. 查看 test 表中的行一和行二内容。
  1. OceanBase(admin@test)>SELECT * FROM test;
  2. +----+---------------+
  3. | c1 | c2 |
  4. +----+---------------+
  5. | 1 | hello alibaba |
  6. | 2 | hello ob |
  7. +----+---------------+
  8. 2 rows in set (0.00 sec)
  1. 替换表 test 中的行三和行二的内容分别为 ‘hello alibaba’ 和 ‘hello oceanbase’。
  1. OceanBase(admin@test)>REPLACE INTO test VALUES (3, 'hello alibaba'),(2, 'hello oceanbase');
  2. Query OK, 3 rows affected (0.00 sec)
  3. Records: 2 Duplicates: 1 Warnings: 0
  1. 查看 test 表中的行一、行二和行三的内容。
  1. OceanBase(admin@test)>SELECT * FROM test;
  2. +----+-----------------+
  3. | c1 | c2 |
  4. +----+-----------------+
  5. | 1 | hello alibaba |
  6. | 2 | hello oceanbase |
  7. | 3 | hello alibaba |
  8. +----+-----------------+
  9. 3 rows in set (0.00 sec)