mysql - MYSQL 中的内联 UPDATE 不起作用

标签 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

最佳答案

一种方法是:

UPDATE `table`
    SET status = '1'
    WHERE price < 10
    limit 22;

您不需要变量来限制行数。这将更新价格满足 where 子句中的条件的 22 行。这是我对你想要做什么的最好猜测。

编辑:

哦,您正在尝试获取数量的总和。也许这会做你想要的:

UPDATE `table` cross join
       (SELECT @rt := 0) vars
    SET status = if((@rt := @rt + quantity) <= 22, '1', status)
    WHERE price < 10;

SQL Fiddle 是 here .

关于mysql - MYSQL 中的内联 UPDATE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945517/

相关文章:

php - PrestaShop,插入数据库时​​获取ID

c# - IEnumerable.Select() 当属性仅在运行时已知时

C# 使用 Linq 连接具有 2 个相同列的 2 个表

php - 通过 php 将时间戳插入 MySql 数据库

MySQL选择字段中重复的地方,不返回所有记录

php - 如何更正 MySQL 表 ID?

linux - 其他进程关闭fifo时无法从epoll_wait中唤醒

asp.net - 在asp.net中为GridView SqlDataSource动态构建SelectCommand

php - 使用mysql列的值指定表名

SQL 多级连接