すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:REPLACE INTO ... SELECT

最終更新日:Aug 21, 2026

REPLACE INTO ... SELECT は、あるテーブル (またはビュー) から別のテーブルへレコードをリアルタイムでコピーします。この操作は、まずレコードの挿入を試みます。ターゲットテーブルに同じプライマリキーを持つレコードがすでに存在する場合 (プライマリキーの競合) 、既存のレコードを削除した後に新しいレコードを挿入します。競合が発生しない場合は、レコードを直接挿入します。

仕組み

コピーされる各レコードに対して、AnalyticDB for MySQL は次の手順を実行します。

  1. ターゲットテーブルへのレコードの挿入を試みます。

  2. プライマリキーの競合が発生した場合、競合するレコードを削除します。

  3. 新しいレコードを挿入します。

REPLACE INTO ... SELECT の使用場面

REPLACE INTO ... SELECT は、プライマリキーが一致する既存のレコードを上書きする必要がある場合に使用します。たとえば、更新されたソースデータでサマリーテーブルを更新するケースなどが該当します。

構文

REPLACE INTO table_name
[(column_name, ...)]
query;

パラメーター

パラメーター 説明
table_name ターゲットテーブルの名前。このステートメントを実行する前に、テーブルが存在する必要があります。
column_name (オプション) データのコピー先となるカラム。これを指定した場合、SELECT 句のカラムは、リストされたカラムと同じ順序で、かつ互換性のあるデータ型で一致する必要があります。
query コピーするレコードを定義する SELECT FROM TABLE または SELECT FROM VIEW ステートメント。

前提条件

  • ターゲットテーブルが存在する必要があります。

customer テーブルから 3 つのカラムを new_customer テーブルにコピーし、プライマリキーが一致する既存のレコードを上書きします。

REPLACE INTO new_customer (customer_id, customer_name, phone_num)
  SELECT customer_id, customer_name, phone_num FROM customer
  WHERE customer.customer_name = 'Alan';