我只希望有一个表来按天存储一些事件。
给定一个表:
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 个查询会更好。
最佳答案
你可能想要 ON DUPLICATE KEY
:
INSERT INTO totals (entryday, total)
VALUES ("08-01-11", 1)
ON DUPLICATE KEY UPDATE total = total + 1
如果该日期不存在行,则将“08-01-11”total
设置为 1,如果确实如此。
关于sql - MySQL如何在单个查询中执行if exist increment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728325/