Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql错误-无法在FROM子句中为更新指定目标表“tbl\U writerremark”_Php_Mysql_Select_Sql Update - Fatal编程技术网

Php Mysql错误-无法在FROM子句中为更新指定目标表“tbl\U writerremark”

Php Mysql错误-无法在FROM子句中为更新指定目标表“tbl\U writerremark”,php,mysql,select,sql-update,Php,Mysql,Select,Sql Update,我有一个疑问: UPDATE tbl_writerremark SET status='no' WHERE id=(SELECT max(id) FROM tbl_writerremark WHERE wid=18) 我得到了这个错误: "you can't specify target table 'tbl_writerremark' for update in FROM clause" 谁能帮我解决这个问题。试试这个- UPDATE tbl_writerremark SET statu

我有一个疑问:

UPDATE tbl_writerremark SET status='no' WHERE id=(SELECT max(id) FROM tbl_writerremark WHERE wid=18)
我得到了这个错误:

 "you can't specify target table 'tbl_writerremark' for update in FROM clause"
谁能帮我解决这个问题。

试试这个-

UPDATE tbl_writerremark SET status='no' WHERE id=(select * from (SELECT max(id) FROM tbl_writerremark WHERE wid=18) as t)
这应该是有效的-

UPDATE tbl_writerremark SET status='no' WHERE id=(SELECT max(id) FROM (select * from tbl_writerremark) as temp_ WHERE wid=18)

在MySql更新和插入中,您不能引用正在子查询中修改的同一个表。

在MySql中,您不能修改在选择部分中使用的同一个表。 这种行为记录在:

您需要停止使用嵌套子查询并分两部分执行操作,或者使用简单的where子句

您可以使用此查询,但它很难看,原因有几个,包括性能:

UPDATE tbl_writerremark SET status='no' WHERE id=(select * from (SELECT max(id) FROM tbl_writerremark WHERE wid=18) as temp_max)

在子查询中,在表名旁边使用别名可能会出现重复,并且应该可以正常工作。我使用过此查询,但遇到此错误-每个派生表都必须有自己的别名才能重新使用。为此,我使用过此查询,并且它可以正常工作。查询-更新tbl_writerremark SET status='no',其中id=select*from select maxid from tbl_writerremark其中wid=18 as test从另一个链接复制了答案。