语法不起作用,并在@rt上返回错误#1064错误:= ... 我不知道将变量放在哪里以便它可以工作。
UPDATE table
@rt:=@rt+quantity;
INNER JOIN (SELECT @rt:=0) AS init ON 1=1
SET status='1'
WHERE price<10
AND @rt<=22
使用SELECT的工作表 http://sqlfiddle.com/#!2/1f125c
答案 0 :(得分:1)
一种方法是:
UPDATE `table`
SET status = '1'
WHERE price < 10
limit 22;
您不需要变量来限制行数。这将更新22行,其中价格符合where
子句中的条件。这是我对你想做什么的最好猜测。
编辑:
哦,你正试图获得数量的总和。也许这会做你想要的:
UPDATE `table` cross join
(SELECT @rt := 0) vars
SET status = if((@rt := @rt + quantity) <= 22, '1', status)
WHERE price < 10;
SQL小提琴是here。