首批通过分布式安全可靠测评,为关键业务系统打造
REPLACE
更新时间:2024-12-06 23:00:00
描述
该语句用于替换表中的一个或多个记录。如果没有主键或唯一键冲突则插入记录,如果存在冲突则先删除冲突记录再插入新的记录。
格式
replace_stmt:
REPLACE [INTO] table_factor [PARTITION (partition_name_list)] [(column_name_list)]
{VALUES | VALUE} column_value_lists;
partition_name_list:
partition_name [, partition_name ...]
column_name_list:
column_name [, column_name ...]
column_value_lists:
(column_value_list) [, (column_value_list) ...]
column_value_list:
column_value [, column_value ...]
column_value:
{expression | DEFAULT}
参数解释
| 参数 | 描述 |
|---|---|
| table_factor | 替换的表名。 |
| column_name_list | 指定替换数据的列。 |
| partition_name_list | 替换表指定的分区名。 |
示例
本示例基于如下表定义。
obclient> CREATE TABLE test (c1 INT PRIMARY KEY, c2 VARCHAR(40));
Query OK, 0 rows affected
替换
test表中的行一和行二的值分别为'hello alibaba'和'hello ob'。obclient> REPLACE INTO test VALUES (1, 'hello alibaba'),(2, 'hello ob'); Query OK, 2 rows affected Records: 2 Duplicates: 0 Warnings: 0查看
test表中的行一和行二内容。obclient> SELECT * FROM test; +----+---------------+ | c1 | c2 | +----+---------------+ | 1 | hello alibaba | | 2 | hello ob | +----+---------------+ 2 rows in set替换表
test中的行三和行二的内容分别为'hello alibaba'和'hello oceanbase'。obclient> REPLACE INTO test VALUES (3, 'hello alibaba'),(2, 'hello oceanbase'); Query OK, 3 rows affected Records: 2 Duplicates: 1 Warnings: 0查看
test表中的行一、行二和行三的内容。obclient> SELECT * FROM test; +----+-----------------+ | c1 | c2 | +----+-----------------+ | 1 | hello alibaba | | 2 | hello oceanbase | | 3 | hello alibaba | +----+-----------------+ 3 rows in set