今回、MySQLのreplace intoについて質問をしたいと思います。
テーブルAには、「ip(int)」と「count(int)」という列があります。主キーは「ip」とします。
まず、insert文で「ip」に「1234」と、countに「1」を書き込みます。
そして、replace intoを利用して、以下のSQLを実行します。
REPLACE INTO `A` SET `ip` = 1234 , `count` = `count` + 1
当方の希望としては、「ip」が「1234」の行の「count」をプラス1して、「2」にしたいと思ったのですが、上記のSQL文を実行すると「count」が「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になります。
ご回答ありがとうございます。
2013/06/13 17:29:14こちらの上記の方法を試してみたところ希望のようになりました。
本日は誠にありがとうございました。