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;


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


 


posted @ 2009-12-15 11:30  tianxin  阅读(2455)  评论(0编辑  收藏  举报