Mysql update语句赋值嵌套select

6759阅读 0评论2012-05-25 邝文琳
分类:Mysql/postgreSQL

今天需要将a表里面id=5的某个字段的值赋值给a表里面id>5和id <10 的 某个字段,以为很简单,就写了条sql语句

点击(此处)折叠或打开

  1. update a set col=(select col from a where id='5') where id>5 and id<10;

报错了
ERROR 1093 (HY000): You can't specify target table 'a' for update in FROM clause

经过研究

发现是 mysql 定义update语句不能同时对同一张进行set 赋值操作,也就是说
update a 的时候 不能在后面select col from a ,如果是不同表操作是没有问题的。

想到一个解决方法:

点击(此处)折叠或打开

  1. update a set col=(select col from (select * from a ) as b where id='5' )where id>5 and id <10;

将select那里的a的表起一个别名b 就可以解决这个问题
上一篇:【一行命令】linux下快速给多块硬盘分区
下一篇:《小强与小明》