2011-01-18 11 views
6

1日ごとに多数のイベントを格納するテーブルを用意したいだけです。テーブルを考えるとMySQL単一のクエリで存在するインクリメントを行う方法

create table totals (
    entryday date, 
    total int(11) default 0 not null, 
    primary key (entryday)); 

は、どのように私はインクリメント単純なクエリを記述しますが、必要に応じて作成することができますか?

私はこれを試してみました - しかし、それは(それは1のまま)インクリメントされていません。

REPLACE totals SET total = total + 1, entryday = "08-01-11" 

明らかにこれは非常に単純に2つのクエリで行うことができるが、JDBC呼び出しと何度も呼び出すことができて、それはです、だから1つのクエリが良いでしょう。

+0

はあなたが取得したい結果を投稿できますか? – Jonathan

答えて

20

おそらくON DUPLICATE KEYをしたい:

行がすでにその日のために存在するとによって totalをインクリメントしない場合は、1に「08-01-11」 totalを設定します
INSERT INTO totals (entryday, total) 
VALUES ("08-01-11", 1) 
ON DUPLICATE KEY UPDATE total = total + 1 

それがあれば1。

+0

ありがとう、ただのチケットです! – Nick

2

MySQL 5.0以降については、INSERT ON DUPLICATE KEY UPDATEを参照してください。

INSERT INTO totals (entryday, total) VALUES ("08-01-11", 1) 
    ON DUPLICATE KEY UPDATE total=total+1; 
0

私はあなたの質問を理解してわからないんだけど、多分このクエリは、あなたの答えです:

update totals set total = total + 1 where entryday = "08-01-11" 
関連する問題