您的位置:首页 > 数据库 > MySQL

mysql中的一个特殊问题:You can’t specify target table ‘abc’ for update in FROM clause

2015-01-29 11:07 736 查看
今天在处理数据的时候,需要update医院的行政编码。在
医院
(hospital)表,医院所在地一般记做“海淀,东城”,而在
行政区码
(codenum)中,却是“海淀区,东城区”

为了解决这个问题,首先使用了
Mysql
中的
CONCAT
函数。

[code]SELECT hospital.district FROM hospital, codename WHERE codename.`name` IN( SELECT CONCAT(district,"区") FROM hospital)

得到



当我以为剩下的工作,用如下的updata语句就可以解决的时候,

[code]UPDATE hospital, codename
SET hospital.qu=codename.num
WHERE hospital.qu IN(
SELECT hospital.district FROM hospital, codename WHERE codename.`name` IN( SELECT CONCAT(district,'区') FROM hospital)
)

却报错了:
You can't specify
 target table 'hospital' for update in FROM clause


意思应该就是,你要update一个表的时候,不能让这个表出现在
FROM
里面(应该是会导致死循环思密达)。
解决方法也很愚蠢,新建一个
tmp
表。然后用这个表进行
UPDATE


[code]CREATE TABLE tmp AS
SELECT hospital.district, codename.num FROM hospital, codename WHERE codename.`name` IN( SELECT CONCAT(district,'区') FROM hospital)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐