2011-01-18 13 views
6

Sadece birkaç güne kadar olayları saklamak için bir tablonun olmasını isterim.MySQL nasıl tek bir sorguda mevcut bir artış varsa nasıl yapılır

bir tablo Verilen:

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

nasıl artırır basit bir sorgu yazabilir, ama bir gerekli yaratır? Açıkçası bu oldukça basit 2 sorguları yapılabilir

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

ancak JDBC çağırır ve birçok kez çağrılabilir aracılığıyla öyle: ancak (o 1 de kalır) değil artırılmıyor -

Bu çalıştı Yani 1 sorgu daha iyi olurdu.

+0

Eğer elde etmek istediğiniz sonuçları sonrası olabilir? – Jonathan

cevap

20

Muhtemelen ON DUPLICATE KEY istiyorum:

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

Bu bir satır zaten bu tarih için mevcut değilse 1'e "08-01-11" total kurmak ve total tarafından artırırız 1 varsa.

+0

Teşekkürler, bu sadece bilet! – Nick

2

MySQL 5.0+ için bkz. INSERT ON DUPLICATE KEY UPDATE.

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

Sorunuzun anladığımdan emin değilim, ama belki bu sorgu Cevabınız:

update totals set total = total + 1 where entryday = "08-01-11" 
İlgili konular