我有
SET @q=10;
SET @p=5.00;
UPDATE 1detail SET quantity =
CASE
WHEN @q=<quantity THEN (quantity - @q) AND SET @q=0
WHEN @q > quantity THEN 0 AND SET @q=(@q-quantity);
END
WHERE price>=@p ORDER BY datetime DESC LIMIT 1;
是否可以在MYSQL中重新定义此CASE语句中的变量?如果可能,我怎么能这样做。
声明返回:
1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在&#39; =附近使用正确的语法WHEN @q > quantity THEN 0 A' at line 3
提前致谢。
答案 0 :(得分:0)
试试这个。在更新查询中定义另一个集时应该用例。
SET @q=10;
SET @p=5.00;
UPDATE 1detail SET quantity =
CASE
WHEN @q=<quantity THEN (quantity - @q) AND SET @q=0
case
WHEN @q > quantity THEN 0 AND SET @q=(@q-quantity);
END
WHERE price>=@p ORDER BY datetime DESC LIMIT 1;
答案 1 :(得分:0)
=&LT;无效,请使用&lt; =而不是
尝试以下SQL,看起来你可以使用多个语句,所以我把它分成两部分。可能看起来不太好(因为我不是SQL专业人员),但它应该有效。
SET @q=10;
SET @p=5.00;
update 1detail
SET quantity =
if((@q := quantity - @q) >= 0, @q, 0)
WHERE price>=@p ORDER BY datetime DESC LIMIT 1;
SET @q = if(@q <0,@q-@q-@q, @q);