如何在使用同一张表过滤数据的表中更新列?

Chandan Mishra:

我正在尝试在此处更新一列。当我运行select语句时,它会给出正确的结果。但是我无法更新。这是我正在运行的脚本。

update table1
  set col1 = 0
where col1 = 1 and col2 not in (select col3 from table1);
戈登·利诺夫(Gordon Linoff):

MySQL不允许子查询引用正在更新的表。因此,请left join改用:

update table1 t1 left join
       table1 tt1
       on t1.col2 = tt1.col3
    set col1 = 0
where t1.col1 = 1 and tt1.col3 is null;

我也强烈建议您不要not in与子查询一起使用not in通常不会做你打算什么时候任何在子查询中值NULL因此,使用有时无法达到您预期目的的东西只是一种不好的做法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章