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

csc*_*aba 1 mysql subquery

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

 UPDATE footbl SET foocol=something WHERE foocol in (SELECT ft.foocol ... bla bla )
Run Code Online (Sandbox Code Playgroud)

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

所以我的解决方案是:

 SELECT @data:=f2.fname ... bla bla
 UPDATE tfile2 SET fstatus='deleted' WHERE tfile2.fname=(@data);
Run Code Online (Sandbox Code Playgroud)

但是,不幸的是,如果子查询@data占用多行,那么在我的情况下只更新一行.!看看这张照片!

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

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

乔鲍

zer*_*kms 7

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

UPDATE footbl
   SET foocol=something
 WHERE foocol in (SELECT foocool FROM (SELECT ft.foocol FROM footbl ...) x )
Run Code Online (Sandbox Code Playgroud)