REPLACE [LOW_PRIORITY | DELAYED]
    [INTO] tbl_name [(col_name,...)]
    VALUES ({expr | DEFAULT},...),(...),...
または:
REPLACE [LOW_PRIORITY | DELAYED]
    [INTO] tbl_name
    SET col_name={expr | DEFAULT}, ...
または:
REPLACE [LOW_PRIORITY | DELAYED]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
        REPLACE
        は、もしテーブル内の古い行が PRIMARY
        KEY か UNIQUE
        インデックスの新しい行と同じ値を持っていれば、古い行は新しい行が挿入される前に削除されるという事以外、INSERT
        と全く同じように機能します。詳しくは
        項12.2.4. 「INSERT 構文」 を参照してください。
      
        REPLACE は SQL スタンダードの MySQL
        拡張子です。それは挿入、または
        削除
        と挿入を行います。挿入、または
        更新 — を行うスタンダード
        SQL — の別の MySQL 拡張子に関しては、
        項12.2.4.3. 「INSERT ... ON DUPLICATE KEY UPDATE 構文」
        を参照してください。
      
        テーブルが PRIMARY KEY か
        UNIQUE
        インデックスを持たなければ、REPLACE
        ステートメントの利用は何の意味も持たないという事を覚えておいてください。新しい行が別の行を複製するかどうかを決める為に利用するインデックスが無い為、それは
        INSERT と同等になります。
      
        全てのカラムの値は、REPLACE
        ステートメントの中で指定された値から取られています。紛失したカラムは、INSERT
        と同じように、デフォルト値に設定されます。現在の行から値を参照し、それらを新しい行の中で利用する事はできません。もし、SET
        
        のような割り当てを利用すると、右側のカラム名の参照は
        col_name =
        col_name + 1DEFAULT(
        として扱われるので、その割り当ては col_name)SET
        
        と同等になります。
      col_name =
        DEFAULT(col_name) + 1
        REPLACE
        を利用する為には、テーブルに対して
        INSERT と DELETE
        権限の両方を持つ必要があります。
      
        REPLACE
        ステートメントは、影響を受けた行数を表す為に総数を返します。これは、削除、挿入された行の総数です。もし単列
        REPLACE
        の総数が1であれば、行が1つ挿入され、削除された行はないという事になります。
        もし総数が1よりも大きければ、新しい行が挿入される前に、1つまたはそれ以上の行が削除されたという事になります。もしテーブルが複数の固有インデックスを含んでいれば、単列が複数の古い行を置き換える事が可能であり、そして新しい行は異なる固有のインデックス内の異なる古い行に値を複製します。
      
        影響を受けた行の総数によって、REPLACE
        が行を追加しただけなのか、それとも行の置き換えも行ったのか、という事を簡単に知る事ができます。総数が1(追加された)か、それよりも大きい(置き換えが行われた)かを確認してください。
      
        もしC API
        を利用していれば、mysql_affected_rows()
        関数を利用する事で、影響を受けた行の総数を得る事ができます。
      
現在は、サブクエリの中で1つのテーブルに置き換え、同じテーブルから選択する事はできません。
        MySQL は次のアルゴリズムを REPLACE
        (と LOAD DATA ...
        REPLACE)に利用します。
      
テーブルに新しい行の挿入を試みてください。
主キーか固有インデックスに複製キー エラーが起きた為に挿入に失敗したら:
複製キー値を持つ矛盾した行をテーブルから削除してください。
テーブルに新しい行の挿入をもう一度試みてください。

