INSERT ON DUPLICATE KEY UPDATE with SUM or MINUS MySQL(在带有SUM或-MYSQL的重复键更新时插入)
本文介绍了在带有SUM或-MYSQL的重复键更新时插入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我非常努力地寻找答案,但没有找到
我有这张表
我正在使用这个查询来更新它(这个查询是必须的,因为我有来自前端的动态输入,所以我可以更新多行)
INSERT INTO main_inventory(name,sellingPrice,purchasePrice,averagePrice,totalQuantity) VALUES("test1",20,5,27.5,23),VALUES("test2",20,5,27.5,50)
ON DUPLICATE KEY UPDATE name = VALUES(name),sellingPrice = VALUES(sellingPrice),purchasePrice = VALUES(purchasePrice),averagePrice = VALUES(averagePrice),totalQuantity = VALUES(totalQuantity)
问题是,如果我运行上面的查询。应该更新该表,但我希望添加totalQuantity列,因此Test1的值应该是46,而Test2的值应该是73。我不知道该怎么办
名称列是唯一的,并且是键
我正在使用NodeJS进行查询
let query4 = `INSERT INTO main_inventory(name,sellingPrice,purchasePrice,averagePrice,totalQuantity) VALUES`
for(let x=0;x<main_items.length;x++){
if(x+1 == main_items.length){
query4 = query4+`("${main_items[x].item}",${main_items[x].sellingPrice},${main_items[x].purchasePrice},${main_items[x].averagePrice},${main_items[x].quantity})
ON DUPLICATE KEY UPDATE name = VALUES(name),sellingPrice = VALUES(sellingPrice),purchasePrice = VALUES(purchasePrice),averagePrice = VALUES(averagePrice),totalQuantity = VALUES(totalQuantity)`
}else{
query4 = query4+`("${main_items[x].item}",${main_items[x].sellingPrice},${main_items[x].purchasePrice},${main_items[x].averagePrice},${main_items[x].quantity}),`
}
}
推荐答案
您可以引用您在查询的UPDATE
部分插入的列的当前值,如:
INSERT INTO main_inventory(name, sellingPrice, purchasePrice, averagePrice, totalQuantity)
VALUES ('test1', 20, 5, 27.5, 23), ('test2', 20, 5, 27.5, 50)
ON DUPLICATE KEY UPDATE
name = VALUES(name),
sellingPrice = VALUES(sellingPrice),
purchasePrice = VALUES(purchasePrice),
averagePrice = VALUES(averagePrice),
totalQuantity = totalQuantity + VALUES(totalQuantity) -- add to the original value
这篇关于在带有SUM或-MYSQL的重复键更新时插入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在带有SUM或-MYSQL的重复键更新时插入


基础教程推荐
猜你喜欢
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 带更新的 sqlite CTE 2022-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01