2011-01-18 5 views
6

매일 여러 이벤트를 저장하는 테이블이 필요합니다.MySQL 단일 쿼리에서 if increment 증분을 수행하는 방법

테이블을 감안할 때 :

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

이 어떻게 증가 간단한 쿼리를 작성할 수 있지만 필요를 생성? , 분명히 이것은 매우 간단하게 2 개 쿼리에서 수행 할 수

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

을하지만, JDBC 호출을 여러 번 호출 할 수 있습니다 통해입니다 :하지만 (이것은 1 유지) 증가되지 않는다 -

나는이 시도 그래서 1 개의 쿼리가 더 좋을 것입니다.

+0

당신이 가져올 결과를 게시 할 수있는가? – Jonathan

답변

20

당신은 아마 ON DUPLICATE KEY 원하는 :

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

즉, 행이 이미 날짜가없는 경우 1로 "08-01-11"total을 설정하고 total로를 증가합니다 만약 그렇다면 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" 
관련 문제