Chinaunix首页 | 论坛 | 博客
  • 博客访问: 123840
  • 博文数量: 23
  • 博客积分: 560
  • 博客等级: 中士
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-07 22:58
文章分类

全部博文(23)

文章存档

2012年(6)

2011年(17)

分类: Mysql/postgreSQL

2012-05-25 12:32:06

今天需要将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 就可以解决这个问题
阅读(6632) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~