使用一个 MYSQL 查询的 WHERE IN 更新多行

Update multiple rows using WHERE IN where using one MYSQL query

我有一个查询来自 table 的 select id,另一个查询用于更新 table 值。这些是使用的查询。

对于 select 个 ID

select id from table_1 where orderId = 41 AND status = 1

待更新

UPDATE table_1 SET orderId = '17' WHERE id IN (1,2,3,4,5,6,.....,n);

这两个查询工作正常。但是当尝试使用此代码时它不起作用。我想更新所有记录中的 orderId update 41 到 17 selected

UPDATE table_1 SET orderId = '17' WHERE id IN (select id from table_1 where orderId = 41 AND status = 1 );

此查询 returns 错误。任何纠正此错误的建议。 谢谢

问题是 MySQL 不允许您在 updatedelete 的子查询中使用相同的 table。我认为你可以简化逻辑,所以不需要子查询。

为什么不直接使用这个?

UPDATE table_1
    SET order_id = '17'
    WHERE order_id = 41 AND status = 1;

注意:如果 order_id 是数字,请使用 17 而不是 '17' -- 不要混合数据类型。

这假设 id 是唯一的。

或者,如果你真的需要 ID 列表,你也可以使用 JOIN:

UPDATE table_1 t1 JOIN
       (SELECT tt1.*
        FROM table_1 tt1
        WHERE tt1.order_id = 41 AND tt1.status = 1
       ) tt1
       ON tt1.id = t1.id
    SET t1.order_id = 17;