▽1
●
匿名回答1号 ベストアンサー |
http://dev.mysql.com/doc/refman/5.1/ja/replace.html
現在の行から値を参照し、それらを新しい行の中で利用する事はできません。もし、SET col_name = col_name + 1 のような割り当てを利用すると、右側のカラム名の参照は DEFAULT(col_name) として扱われるので、その割り当ては SET col_name = DEFAULT(col_name) + 1 と同等になります。
http://dev.mysql.com/doc/refman/5.1/ja/insert-on-duplicate.html
例えば、もしカラム a が UNIQUE として宣言され、それが値 1 を含んでいたら、次の2つのステートメントは同一効果を持ちます。
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1;もしその行が新しいレコードとして挿入されると、行に影響される値は1となり、もし既存レコードが更新されると2になります。