MYSQL中的情况,变量不起作用

时间:2014-07-16 03:30:41

标签: mysql sql mysqli case

我有

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 

提前致谢。

2 个答案:

答案 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);