MySQL:如何将重复键上的字段更新为 1 以外的值?

标签 mysql variables duplicates increment calculated-columns

我看到了有关如何在尝试重复插入时增加列值的问题:

insert into table (col) values (val) on duplicate update countcol=countcol+1;

但是如何将 countcol 增加一个变量值呢?

例如:

insert into table (col, count) values (val1, val2) on duplicate update count=count+val2?

假设我正在跟踪学生阅读的书籍数量,并且我的表格包含:

Mark | 5

Mark 报告说我又读了 2 本书,所以我想要:

标记| 7(在现有总数中添加 2)

但是我想处理 Jerry(程序新手)读了 2 本书的情况

插入--> 杰瑞 | 2

也许类似;

insert into readers (student, count)values ('Mark',3 as read) 
on duplicate key update count=count+read;

我可以访问 mySQL 中提交的值的实际名称/引用吗?这可以在一条语句中完成吗?或者我是否需要先测试记录是否存在,然后根据结果插入/更新?

最佳答案

使用values():

insert into table (col, count)
    values (val1, val2)
    on duplicate update count = count + values(count);

values() 指的是传递到 insert 中的值。

关于MySQL:如何将重复键上的字段更新为 1 以外的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46877272/

相关文章:

C++ - 在静态无效函数上访问变量

Python:两种方式去重

c++ - 有没有办法检查 Qt 中的重复连接?

php - 如何使用 eloquent 根据数据库关系订购 JSON 响应

根据最高击杀次数对 PHP 表用户进行排名

MySQL JOIN 同一张表上的多个连接?

XSLT:如何删除同义 namespace

mysql - 使用随机的 SQL 查询

variables - 在 Go var 声明中显式提供类型失败,而隐式工作

javascript - 如何刷新存储和快照的 jquery 选择器变量