使用一个 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 不允许您在 update
或 delete
的子查询中使用相同的 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;
我有一个查询来自 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 不允许您在 update
或 delete
的子查询中使用相同的 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;