REPLACE SELECT FROM は、あるテーブル (またはビュー) から別のテーブルにレコードをリアルタイムでコピーします。各レコードについて、ターゲットテーブルにプライマリキーがすでに存在するかどうかを確認します。存在する場合、既存のレコードは削除され、新しいレコードが挿入されます。存在しない場合、レコードは直接挿入されます。
仕組み
コピーされる各レコードに対して、AnalyticDB for MySQL は次のステップを実行します。
ターゲットテーブルにレコードを挿入しようとします。
プライマリキーの競合が発生した場合、競合するレコードを削除します。
新しいレコードを挿入します。
REPLACE SELECT FROM を使用する場合
プライマリキーが一致する既存のレコードを上書きする必要がある場合 (たとえば、更新されたソースデータでサマリーテーブルをリフレッシュする場合など) に REPLACE SELECT FROM を使用します。
構文
REPLACE INTO table_name
[(column_name, ...)]
query;パラメーター
| パラメーター | 説明 |
|---|---|
table_name | ターゲットテーブルの名前。この文を実行する前に、テーブルが存在している必要があります。 |
column_name | (オプション) データをコピーする先の列。指定した場合、SELECT 句の列は、リストされた列と同じ順序で、互換性のあるデータ型である必要があります。 |
query | コピーするレコードを定義する SELECT FROM TABLE または SELECT FROM VIEW 文。 |
前提条件
ターゲットテーブルが存在すること。
例
customer テーブルから new_customer テーブルに 3 つの列をコピーし、プライマリキーが一致する既存のレコードを上書きします。
REPLACE INTO new_customer (customer_id, customer_name, phone_num)
SELECT customer_id, customer_name, phone_num FROM customer
WHERE customer.customer_name = 'Alan';