MYSQL 1093 之You can't specify target table for update in FROM clause解决办法

You can't specify target table for update in FROM clause含义:不能在同一表中查询的数据作为同一表的更新数据。

出现以上错误,是因为想将表自身的字段A的值作为被更新字段B的值而导致的。

"自身更新自身"的正确写法:

[sql] view plain copy
 
  1. UPDATE t_loan SET f_biddingAmount =   
  2. (  
  3.    SELECT amount FROM(  
  4.     SELECT ln.*, ln.f_amount amount FROM t_loan ln  
  5.    ) lnnew WHERE lnnew.f_loanId = t_loan.f_loanId  
  6. );  

含义,查询t_loan中f_amount值作为f_biddingAmount被更新的值。

我们想达到的效果是将t_loan表中的f_amount值作为表自身f_biddingAmout被更新的值,

也就是将t_loan表中的f_biddingAmount都更新成f_amount的值。

我们也可以在每一个select,update后面跟上条件等执行SQL。

比如,在SELECT ln.*, ln.f_amount amount FROM t_loan ln后面加上WHERE条件等。

以上问题只针对mysql数据库使用这么麻烦的写法,oracle中针对这种需求写起来相对比较简单。

原文:http://blog.csdn.net/yhl_jxy/article/details/50856619

原文地址:https://www.cnblogs.com/azhqiang/p/8523038.html