【问题标题】:MySQL: How do you update a field on duplicate key for a value other than 1?MySQL:如何为重复键上的字段更新 1 以外的值?
【发布时间】:2018-04-03 06:54:55
【问题描述】:

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

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

马克报告说还读了 2 本书,所以我想要:

Mark | 7(现有总数加 2)

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

插入--> Jerry | 2

也许是这样的;

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

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

【问题讨论】:

  • on duplicate key 仅适用于主键或唯一键。

标签: mysql variables duplicates increment calculated-columns


【解决方案1】:

使用values():

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

values() 指的是传递给insert 的值。

【讨论】:

  • 这就是我想要的!谢谢!
猜你喜欢
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
相关资源
最近更新 更多