MYSQL中的内连接,UPDATE不起作用

时间:2014-07-24 23:15:46

标签: mysql select join inner-join

语法不起作用,并在@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

1 个答案:

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