説明
このステートメントは、テーブル内の1つまたは複数のレコードを置き換えるために使用されます。主キーまたは一意キーの競合がない場合はレコードを挿入し、競合がある場合は競合するレコードを削除してから新しいレコードを挿入します。
フォーマット
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テーブルの行1と行2の値をそれぞれ'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: 0testテーブルの行1と行2の内容を確認します。obclient> SELECT * FROM test; +----+---------------+ | c1 | c2 | +----+---------------+ | 1 | hello alibaba | | 2 | hello ob | +----+---------------+ 2 rows in setテーブル
testの行3と行2の内容をそれぞれ'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: 0testテーブルの行1、行2、行3の内容を確認します。obclient> SELECT * FROM test; +----+-----------------+ | c1 | c2 | +----+-----------------+ | 1 | hello alibaba | | 2 | hello oceanbase | | 3 | hello alibaba | +----+-----------------+ 3 rows in set