php - 尝试从数据库表中进行基本减法
问题描述
我正在尝试根据用户输入减去数据,例如:
**id | quantity
1 | 50
2 | 30
3 | 60**
UPDATE表SET 数量=数量 - * 一些输入值*
如果我逐字段减去id=1...2...3,这很容易,但是我想在输入数量时自动减去值,所以如果输入是 60,并且第一个有50 field,剩余部分将从下一个字段中减去,依此类推,如下所示:
$输入 = 60; 现在第一个数量将是 50-60=0,mod=10,第二个 30-10=20。
**id | quantity
1 | 0
2 | 20
3 | 60**
有人能帮我吗?我尝试了我能记住的一切。谢谢!
解决方案
您可以使用以下方法计算新值:
select t.*,
(case when running_quantity - quantity >= 60 then 0
when running_quantity > 60 then running_quantity - quantity
else quantity
end) as new_quantity
from (select t.*, sum(quantity) over (order by id) as running_quantity
from t
) t
您可以将其合并到update
:
update t join
(select t.*,
(case when running_quantity - quantity >= 60 then 0
when running_quantity > 60 then running_quantity - quantity
else quantity
end) as new_quantity
from (select t.*, sum(quantity) over (order by id) as running_quantity
from t
) t
) tt
on tt.id = t.id
set quantity = new_quantity
where new_quantity <> quantity;
推荐阅读
- tsql - 如何从存储过程中返回两个结果集?
- javascript - HTML5 按钮 onClick 函数
- ionic-framework - 本地通知插件在 Ionic App 中不起作用
- spring-boot - 使用相应的消息头键值设置 SFTP 配置属性值
- javascript - Konvajs 取消拖动事件
- mongodb - Mongodb得到信号15(终止),将在当前cmd结束后终止centos 7.5
- swift - 将当前时间格式设置为 yyyy-MM-dd
- vb.net - 从字符串“”到类型“Double”的转换对于新 ID 无效
- sql-server - 从 db2 获取前 n 到 n 行
- python - 使用python分割字符串数据中的错误