问题分析

在MySQL语句中,遇到You can’t specify target table ‘fangyuan’ for update in FROM clause错误,这个问题只出现于MySQL,MSSQL和Oracle不会出现此问题。其实翻译过来差不多意思就是在同一语句中,select出同一表中的某些值,再update这个表或者字段,从而引发的错误。

解决方法:

将SELECT出的结果再通过中间表SELECT一遍

例如
会报You can’t specify target table ‘fangyuan’ for update in FROM clause错误
DELETE FROM tempA WHERE tid IN (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
)
解决:
DELETE FROM tempA WHERE tid NOT IN (
SELECT t.tid FROM (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
) t
)

报错案例

分析SQL语句:通过子查询的结果字段作为update的条件时报错,如下图:
MySQL中You can't specify target table 'fangyuan' for update in FROM clause完美解决
将子查询结果单独运行后交给where条件语句时,修改成功!没有错,问题就出现在子查询以及update的操作上
MySQL中You can't specify target table 'fangyuan' for update in FROM clause完美解决
解决:将SELECT出的结果再通过中间表SELECT一遍,如下图
MySQL中You can't specify target table 'fangyuan' for update in FROM clause完美解决

相关文章:

  • 2021-09-12
  • 2022-12-23
  • 2021-06-28
  • 2022-01-08
  • 2022-12-23
  • 2021-07-24
  • 2021-05-22
猜你喜欢
  • 2021-12-30
  • 2021-06-07
  • 2021-07-01
  • 2021-11-07
  • 2022-01-12
  • 2021-05-20
  • 2021-10-24
相关资源
相似解决方案