更新具有引用相同表的内部查询的查询

时间:2016-06-23 04:37:10

标签: mysql sql

update goods_inward_outward
set is_active = 0
where gi_go_id IN (select gi_go_id from goods_inward_outward where gi_go_id <100)

我收到了以下错误。

  

#1093 - 您无法在FROM子句中为更新指定目标表'goods_inward_outward'

上面的问题是什么? 这是因为我在同一个表上使用更新和选择查询? 如果是这样,有什么可以替代解决?

由于

2 个答案:

答案 0 :(得分:3)

在MySQL中执行此操作的一种方法是使用join。但是,在您的情况下,join键和where子句使用相同的列。因此,不需要额外的表引用:

update goods_inward_outward gio
    set is_active = 0
    where gi_go_id < 100;

答案 1 :(得分:1)

取消子查询会有什么问题:

UPDATE goods_inward_outward
SET is_active = 0
WHERE gi_go_id < 100