125 lines
2.3 KiB
Markdown
125 lines
2.3 KiB
Markdown
REPLACE
|
|
============================
|
|
|
|
|
|
|
|
描述
|
|
-----------
|
|
|
|
该语句用于替换一个或多个记录到表。如果没有主键或唯一键冲突则插入记录,如果存在冲突则先删除冲突记录再插入新的记录。
|
|
|
|
格式
|
|
-----------
|
|
|
|
```javascript
|
|
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 | 替换表指定的分区名 |
|
|
|
|
|
|
|
|
### 示例
|
|
|
|
本示例基于如下表定义。
|
|
|
|
```javascript
|
|
OceanBase(admin@test)>create table test (c1 int primary key, c2 varchar(40));
|
|
Query OK, 0 rows affected (0.23 sec)
|
|
```
|
|
|
|
|
|
|
|
1. 替换 test 表中的行一和行二的值分别为 'hello alibaba' 和 'hello ob'。
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
OceanBase(admin@test)>REPLACE INTO test VALUES (1, 'hello alibaba'),(2, 'hello ob');
|
|
Query OK, 2 rows affected (0.01 sec)
|
|
Records: 2 Duplicates: 0 Warnings: 0
|
|
```
|
|
|
|
|
|
|
|
2. 查看 test 表中的行一和行二内容。
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
OceanBase(admin@test)>SELECT * FROM test;
|
|
+----+---------------+
|
|
| c1 | c2 |
|
|
+----+---------------+
|
|
| 1 | hello alibaba |
|
|
| 2 | hello ob |
|
|
+----+---------------+
|
|
2 rows in set (0.00 sec)
|
|
```
|
|
|
|
|
|
|
|
3. 替换表 test 中的行三和行二的内容分别为 'hello alibaba' 和 'hello oceanbase'。
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
OceanBase(admin@test)>REPLACE INTO test VALUES (3, 'hello alibaba'),(2, 'hello oceanbase');
|
|
Query OK, 3 rows affected (0.00 sec)
|
|
Records: 2 Duplicates: 1 Warnings: 0
|
|
```
|
|
|
|
|
|
|
|
4. 查看 test 表中的行一、行二和行三的内容。
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
OceanBase(admin@test)>SELECT * FROM test;
|
|
+----+-----------------+
|
|
| c1 | c2 |
|
|
+----+-----------------+
|
|
| 1 | hello alibaba |
|
|
| 2 | hello oceanbase |
|
|
| 3 | hello alibaba |
|
|
+----+-----------------+
|
|
3 rows in set (0.00 sec)
|
|
```
|
|
|
|
|
|
|