【问题标题】:Update multiple rows using WHERE IN where using one MYSQL query使用 WHERE IN 更新多行 where 使用一个 MYSQL 查询
【发布时间】:2021-08-02 17:36:36
【问题描述】:

我有一个从表中选择 id 的查询和另一个用于更新表值的查询。这些是使用的查询。

用于选择 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 更新 41 到 17

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

此查询返回错误。任何纠正此错误的建议。 谢谢你

【问题讨论】:

  • 您的查询不应该工作,因为order-id 是一个无效的标识符。请包括您遇到的错误。
  • 我为添加这个问题而编辑。我使用了 order_id

标签: mysql sql sql-update where-clause where-in


【解决方案1】:

问题在于 MySQL 不允许您在 updatedelete 的子查询中使用同一个表。我认为您可以简化逻辑,因此不需要子查询。

为什么不直接使用这个?

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多