首页 > 解决方案 > 尝试从数据库表中进行基本减法

问题描述

我正在尝试根据用户输入减去数据,例如:

**id  |  quantity
  1   |  50
  2   |  30
  3   |  60**

UPDATESET 数量=数量 - * 一些输入值*

如果我逐字段减去id=1...2...3,这很容易,但是我想在输入数量时自动减去值,所以如果输入是 60,并且第一个有50 field,剩余部分将从下一个字段中减去,依此类推,如下所示:

$输入 = 60; 现在第一个数量将是 50-60=0,mod=10,第二个 30-10=20。

**id  |  quantity
  1   |  0
  2   |  20
  3   |  60**

有人能帮我吗?我尝试了我能记住的一切。谢谢!

标签: phpmysqlsqldatabasemath

解决方案


您可以使用以下方法计算新值:

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;

推荐阅读