ホームページ >データベース >mysql チュートリアル >MySQL は INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 構文をどのように処理しますか?
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 サイトの他の関連記事を参照してください。