MySQL更新一样!带子查询的表

时间:2011-10-06 23:14:27

标签: mysql subquery

我希望更新同一个表的某些行。 据我所知,以下形式在MySQL下不起作用

 UPDATE footbl SET foocol=something WHERE foocol in (SELECT ft.foocol ... bla bla )

MySQL论坛的一篇帖子暗示:使用子查询。

所以我的解决方案是:

 SELECT @data:=f2.fname ... bla bla
 UPDATE tfile2 SET fstatus='deleted' WHERE tfile2.fname=(@data);

但是,不幸的是,如果子查询@data占用多行,那么在我的情况下只更新一行。 !check this pic!

那么,我错了什么,如何在同一个表上更新多行呢?

感谢您的努力和提前的时间。

乔鲍

1 个答案:

答案 0 :(得分:7)

您可以使用双重嵌套来使用同一个表。在这种情况下,mysql无法获得您正在更新同一个表:

UPDATE footbl
   SET foocol=something
 WHERE foocol in (SELECT foocool FROM (SELECT ft.foocol FROM footbl ...) x )