ホームページ >データベース >mysql チュートリアル >同じ構造を持つ MySQL テーブルをマージし、主キーの競合を処理する方法は?

同じ構造を持つ MySQL テーブルをマージし、主キーの競合を処理する方法は?

DDD
DDDオリジナル
2025-01-13 10:31:42760ブラウズ

How to Merge MySQL Tables with Identical Structures and Handle Primary Key Conflicts?

MySQL テーブル マージ: 完全ガイド

同じ構造を持つ 2 つの MySQL テーブルをマージします。これにより、主キーが競合する可能性があるため、特有の課題が生じます。ただし、このタスクを達成するための効果的な方法がいくつかあります。

方法 1: INSERT IGNORE

table_1 の既存の行を保持し、table_2 に新しい行のみを挿入するには、次のクエリを使用できます:

<code class="language-sql">INSERT IGNORE
  INTO table_1
SELECT *
  FROM table_2;</code>

方法 2: 置換

また、新しい行を挿入するときに table_1 の既存の行を table_2 の対応する行で置き換える場合は、次のクエリを使用できます:

<code class="language-sql">REPLACE
   INTO table_1
 SELECT *
   FROM table_2;</code>

主キーの競合に関する注意事項

INSERT IGNORE メソッドと REPLACE メソッドは、主キーの競合を異なる方法で処理します。 INSERT IGNORE は、主キー値が競合しないように新しい行を挿入します。 REPLACE は、主キーの競合に関係なく、既存の行を更新します。

次のデータを含む 2 つのテーブル、table_1 と table_2 について考えます。

table_1
id name
1 John
2 Mary
table_2
id name
1 Mike
2 Sarah
3 Peter

INSERT IGNORE を使用してクエリを実行すると、結果は次のようになります:

table_1
id name
1 John
2 Mary
3 Peter

一致する主キーを持つ table_2 の行は無視され、存在しない主キーを持つ行のみが挿入されます。

REPLACE クエリを使用すると、結果は次のようになります:

table_1
id name
1 Mike
2 Sarah
3 Peter

主キーが一致する table_1 の行は、table_2 の対応する行に置き換えられます。

以上が同じ構造を持つ MySQL テーブルをマージし、主キーの競合を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。