Mysql 增加列的值,直到满足某些条件
我有一个MySQL表和 我要执行以下操作: 让我们假设一个变量Mysql 增加列的值,直到满足某些条件,mysql,Mysql,我有一个MySQL表和 我要执行以下操作: 让我们假设一个变量amount=some\u值 for each row in ingridients_entry { IF amount = 0 break; END IF IF amount > count - consumed SET amount = amount - (count-consumed) AND consumed = count ELSE SET consumed = consumed + amount AN
amount=some\u值
for each row in ingridients_entry {
IF amount = 0
break;
END IF
IF amount > count - consumed
SET amount = amount - (count-consumed) AND consumed = count
ELSE
SET consumed = consumed + amount AND amount = 0
END IF
}
是否可以使用sql更新查询
我正在考虑在这样的过程中使用case和update
DELIMITER $$
CREATE PROCEDURE consumeIngridients(IN amount FLOAT, IN sr INT)
BEGIN
update ingridients_entry set consumed=CASE
WHEN amount = 0 THEN consumed
WHEN amount > (count - consumed) THEN SET amount = amount - (count - consumed); count
ELSE consumed + amount;SET amount = 0;
END CASE;
where serial=sr and count>consumed;
END$$
DELIMITER ;
但这给了我一个错误:
错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解可在“SET amount=amount-(count-consumered)”附近使用的正确语法;计算其他消耗量+金额;在第5行设置“amoun”
请帮忙
WHEN…THEN
语句返回一个值,在本例中是由set consumered=
设置的值。请勿在此语句中使用SET
。此外,此语句中不要有多个表达式(用分号分隔的表达式——顺便说一句,分号不是分隔符,因为您将其设置为$$
)。相反,让您的WHEN
语句返回您希望consumered
等于的值,并将其余逻辑和赋值写在IF
语句中。好的,我试试看!请编辑您的帖子,以包含您的表格布局,而不是指向外部站点的链接。链接已断开,即使它现在起作用,将来也可能会消失,使您的问题对未来的读者毫无用处。问题底部以图像形式提供了模式:非常感谢@Anton先生的帮助。最后,我让它工作了,尽管它需要一些邪恶的逻辑:P.SET@amount=4.5;设置@debit=0;更新InGridens_条目集consumed=CASE WHEN@debit>0则consumed+(@amount:=0)+(@debit:=0)WHEN@amount=0则consumed WHEN@amount>=(count consumed)则(@amount:=@amount-(count consumed))*0+计数WHEN@amountconsumed代码>