INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE による一括更新の実行
新しいデータをテーブルでは、同一の一意のキーを持つ既存のレコードを最新の値で更新する必要がある場合があります。 MySQL は、INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE ステートメントを使用するこのようなシナリオに便利な構文を提供します。
あなたの場合、exp_id、created_by、location、animal を除くすべての列を更新する必要があります。 、開始時刻、終了時刻。この更新句の構文は次のとおりです。
ON DUPLICATE KEY UPDATE <column_name>=<select_column_name>, ...
ここでは、
クエリに基づくと、完全なステートメントは次のようになります。
INSERT INTO lee(exp_id, created_by, location, animal, starttime, endtime, entct, inact, inadur, inadist, smlct, smldur, smldist, larct, lardur, lardist, emptyct, emptydur) SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct, t.inact, t.inadur, t.inadist, t.smlct, t.smldur, t.smldist, t.larct, t.lardur, t.lardist, t.emptyct, t.emptydur FROM tmp t WHERE uid=x ON DUPLICATE KEY UPDATE entct=t.entct, inact=t.inact, inadur=t.inadur, inadist=t.inadist, smlct=t.smlct, smldur=t.smldur, smldist=t.smldist, larct=t.larct, lardur=t.lardur, lardist=t.lardist, emptyct=t.emptyct, emptydur=t.emptydur;
このステートメントを使用すると、MySQL は tmp からのデータをlee であり、重複キーが見つかった場合は、指定された列を SELECT ステートメントの値で更新します。
以上がINSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE を使用して MySQL で一括更新を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。