特定の列が既に存在するテーブルにデータを挿入する場合存在する場合は、それらの列を新しい値で更新することができます。 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 サイトの他の関連記事を参照してください。