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从另一个链接复制了答案。