Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318798
  • 博文数量: 23
  • 博客积分: 2115
  • 博客等级: 大尉
  • 技术积分: 371
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-15 16:36
文章分类

全部博文(23)

文章存档

2013年(4)

2012年(4)

2011年(3)

2010年(6)

2009年(5)

2008年(1)

我的朋友

分类: Mysql/postgreSQL

2013-03-22 18:54:26


点击(此处)折叠或打开

  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 就可以解决这个问题
 
 
update mem_player set `DataWarehouse`=(select `DataWarehouse` from (select * from mem_player) as b where `Pid`=100000) 
阅读(14163) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~