INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 構文の明確化
一部の列が既に存在する可能性がある INSERT クエリを実行する場合ターゲットテーブルでは、ON DUPLICATE KEY UPDATE 句を使用できます。この句を使用すると、更新基準と更新する値を指定できます。
このようなクエリの UPDATE 句の構文は次のとおりです。
ON DUPLICATE KEY UPDATE column1=value1, column2=value2, ...;
理解すべき重要な点は次のとおりです。 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 句で指定された列が列の割り当てに使用されます。デフォルト:
で名前が付けられた列SELECT句を使用して更新を指定します値:
列ON DUPLICATE KEY UPDATE 句に含まれていないものは更新されません。
以上がMySQL は INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 構文をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。