gpt4 book ai didi

mysql - 如果当前更新行 0,则更新下一行

转载 作者:行者123 更新时间:2023-11-29 19:06:35 25 4
gpt4 key购买 nike

我有一个如下所示的表格:

HarvestID  |  CheckIn | Actual | Status
1 | Date | 100 | Process
2 | Date | 200 | Process
3 | Date | 400 | Process

我的问题是如果我设置 Qty='350' 然后将 ID '1' 和 '2' 更新为 0,并且 ID '3' Qty='350' 则如何更新下一行

有没有一种方法可以做到这一点,而无需创建一个新表来存储“A”数量的总数并使用存储过程?

我已经尝试的是:

    cmdTemp = New MySqlCommand("SELECT * FROM tb_harvest ORDER BY CheckIn ASC LIMIT 1", cn)
sqlrd = cmdTemp.ExecuteReader
While sqlrd.Read
harvestid = sqlrd("HarvestID")
qtyTemp1 = sqlrd("Actual") - Qty : qtyTemp2 = sqlrd("Actual")
End While
sqlrd.Close()
If qtyTemp1 < 0 Then
cmdTemp = New MySqlCommand("UPDATE tb_harvest SET Actual=0 WHERE HarvestID=" & harvestid & "; " & _
"UPDATE tb_harvest SET Actual=Actual+" & qtyTemp1 & " WHERE HarvestID=" & harvestid + 1, cn)
cmdTemp.ExecuteNonQuery()
Else
cmdTemp = New MySqlCommand("UPDATE tb_harvest SET Actual=Actual-" & qtyTemp2 & " WHERE HarvestID=" & harvestid, cn)
cmdTemp.ExecuteNonQuery()
End If

最佳答案

您可以使用变量来做到这一点:

set @qty = 350;

update tb_harvest
set actual = (case when @qty <= 0 then 0
when @qty >= actual
then if(@qty := @qty - actual, 0, 0)
when (@tmp := actual - @qty),
then if(@qty := 0, @tmp, @tmp)
else actual -- should never happen
end)
order by harvestid;

关于mysql - 如果当前更新行 0,则更新下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43437614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com