14

2 つのINSERTコマンドがありますが、2 つの行のセット (テーブルに既に存在する行と、コマンドとして持っている行)INSERTが分離されていないため、これらのコマンドは役に立ちません。どちらのコマンドも、多数の行と多数の値を挿入します。

したがって、それらの行を実行したい場合、重複エントリエラーが発生します。

これらのコマンドを に「変換」する簡単な方法はありますUPDATEか?

ばかげているように聞こえるのはわかっていINSERTますUPDATE。シナリオを明確にするために、別の開発者がスクリプトをくれました:)

前もって感謝します、ダニエル

編集- 問題は解決しました

最初にテーブルを作成し、コマンドを入力してから、次のコマンドINSERTを使用しました。REPLACE

REPLACE
    INTO table_1
SELECT *
    FROM table_2;

これはもともと次の場所にあります: How can I merge two MySQL tables?

4

4 に答える 4

16

MySQL のREPLACEキーワードはこれを行います。INSERTクエリのキーワードを単語に置き換えるだけでREPLACE、新しい行を挿入する代わりに行を更新する必要があります。主キーまたは一意のキー列を挿入している場合にのみ機能することに注意してください。

于 2010-09-11T21:39:53.223 に答える
0

MySQL の場合、INSERT IGNOREまたは のINSERT ... ON DUPLICATE UPDATE構文を使用できます。MySQL リファレンス マニュアルを参照してください。

于 2010-09-11T21:39:27.047 に答える
0

クエリを簡単に変更して重複行を更新できます。MySQL のINSERT ... ON DUPLICATE KEY構文を参照してください。

于 2010-09-11T21:41:31.883 に答える
0

それらを手作業で更新するように書き直す必要があります。このような問題が発生した場合は、最初に特定の主キーの数を照会し、何も見つからない場合は、汎用データセットを挿入して後で更新します。これにより、新しいデータが追加され、既存のデータが更新され、新しいデータの挿入とデータの更新を区別する必要がなくなります。

于 2010-09-11T21:27:26.753 に答える