ホームページ > データベース > mysql チュートリアル > MySQL の「INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE」を使用して新しいレコードを挿入しながら既存のレコードを効率的に更新するにはどうすればよいですか?

MySQL の「INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE」を使用して新しいレコードを挿入しながら既存のレコードを効率的に更新するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-01 03:42:10
オリジナル
720 人が閲覧しました

How Can I Efficiently Update Existing Records While Inserting New Ones Using MySQL's `INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE`?

「INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE」を使用して既存のレコードを更新する

特定の列が既に存在するテーブルにデータを挿入する場合存在する場合は、それらの列を新しい値で更新することができます。 MySQL は、「ON DUPLICATE KEY UPDATE」句を使用するこのようなシナリオに便利な構文を提供します。

クエリには、「INSERT INTO」ステートメントの後に「SELECT」ステートメントが続きます。目標は、「lee」テーブルに新しい行を挿入し、一意のキーに一致する既存の行を更新することです。これを行うには、「ON DUPLICATE KEY UPDATE」句で更新するカラムを指定する必要があります。

MySQL は、等号 (=) の前の部分を、「INSERT INTO」句で指定されたカラムを参照しているものとして解釈します。 」条項。等号の後の部分は、「SELECT」句の列を参照します。

例:

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, ...
ログイン後にコピー

このクエリでは、「INSERT INTO」句の列は、更新されないのは、「exp_id」、「created_by」、「location」、「animal」、「starttime」、「endtime」です。 「entct」、「inact」、「inadur」、「inadist」などの他のすべての列は、「SELECT」句の値で更新されます。

適切な構文を使用すると、次のことができます。単一のクエリで挿入と更新を実行し、データを効率的に最新の状態に保ちます。

以上がMySQL の「INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE」を使用して新しいレコードを挿入しながら既存のレコードを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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