sql - MySQL如何在单个查询中执行if exist increment

标签 sql 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 个查询会更好。

最佳答案

你可能想要 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/

相关文章:

php - jqGrid 集成工具栏搜索不起作用

java - Hibernate (mysql) 为同一个查询返回不同的结果

SQL - 组合 AND & OR

sql - Postgresql 9.4,将现有主键设置为 SERIAL

sql - SQL - 排除仅满足条件的用户

php - wordpress get_var 返回 null

sql - 在 MySql 数据库中的两个日期之间搜索

php - 加入后只识别已注册的群组?

mysql - 在一个查询中上下移动表关系

mysql - 当我向 MySQL 表中插入多行时,id 每次都会递增 1 吗?