ホームページ > データベース > mysql チュートリアル > INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE を使用して MySQL で一括更新を実行する方法

INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE を使用して MySQL で一括更新を実行する方法

DDD
リリース: 2024-12-13 00:56:17
オリジナル
297 人が閲覧しました

How to Perform Bulk Updates in MySQL Using INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE?

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 句の列を参照します。

クエリに基づくと、完全なステートメントは次のようになります。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート