php—尝试从数据库表中执行基本减法

irtuqstp  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(295)

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


**id  |  quantity

  1   |  50
  2   |  30
  3   |  60**

update table set quantity=数量-某些输入值
如果我一个字段一个字段地减去,其中id=1…2…3,这很容易,但是我想在输入数量时自动减去值,所以如果输入是60,第一个字段有50,余数将从下一个字段中减去,以此类推:
$输入=60;现在第一个数量是50-60=0,mod=10,第二个是30-10=20。


**id  |  quantity

  1   |  0
  2   |  20
  3   |  60**

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

zaq34kh6

zaq34kh61#

可以使用以下公式计算新值:

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;

相关问题