人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLのreplace intoの使い方について

今回、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」になってしまいます。
解決方法がございましたら是非ご教授いただければと存じます。


●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

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になります。


匿名質問者さんのコメント
ご回答ありがとうございます。 こちらの上記の方法を試してみたところ希望のようになりました。 本日は誠にありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ