ホームページ >データベース >mysql チュートリアル >同じ構造を持つ MySQL テーブルをマージし、主キーの競合を処理する方法は?
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 サイトの他の関連記事を参照してください。