update语句 #1093错误 看mysql与mssql的区别

今天为了一项需求 在mysql里写了一个复合update语句:

UPDATE  uchome_feed  SET  title_template  =
SELECT  title_templateFROM uchome_feedWHERE feedid  = 1  )
WHERE  feedid  = 2


这个是我按mssql的思路写的,因为我一直认为mssql和mysql在语法上区别很小,

而且这基本的update复合语句我自认是不会写错,

可是结果很让我意外。这条执行语句在mssql里面执行没有任何问题,

但是在mysql里却出现了 1093错误,

 

我百思不得其解,求助google.

答案让我非常差异。

难道这就是免费数据库的区别?BUG?

网上的解释:原因是不能根据select一个表得到的条件,来同时update这个表。

 

于是我换了一种写法

create   table  tmp  as  ( select   *   FROM  uchome_feed  WHERE  feedid  = 1  );

update  uchome_feed  SET  title_template  =  
(
SELECT  title_template  FROM  tmp  WHERE  feedid  = 1  )  WHERE  feedid  = 2 ;

drop   table  tmp;


执行成功了。。。大汗。。。只有临时表可以解决这种问题。。。


 


你可能感兴趣的:(update)