VALUES(col_name)

VALUES(col_name)

INSERT ... ON DUPLICATE KEY UPDATE 文では、UPDATE 句の VALUES(col_name) 関数を使用して、ステートメントの INSERT 部分からのカラム値を参照することができます。つまり、UPDATE 句内の VALUES(col_name) は、複製キーとの衝突もなく、インサートされる col_name 値を参照するということです。この関数は複数行のインサートにおいて特に便利です。VALUES() 関数は、INSERT ... ON DUPLICATE KEY UPDATE 文においてのみ有用で、その他では NULL を戻します。項12.2.4.3. 「INSERT ... ON DUPLICATE KEY UPDATE 構文」 参照。

mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
    -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);