日期:2014-05-19  浏览次数:20463 次

求 SQL批量更新
我这个   mysql不识别以下的表达方式。。。
UPDATE   ddn0  
SET   ddn0.personnel   =   newserv.per  
WHERE   ddn0.name   =   newserv.name  

意思就是   一个用户   对应   一个   客服,现在呢有不少   用户都换了新的客服
DDN0是   大表   用户与客服  
比如
DDN0
name       .......personnel....
aa                           benny
bb                           denny
cc                           cooky
dd                           elle
.....

下面是个更新名单
newserv
比如
name       per
cc           dk
dd           john
..........

想寻求个MYSQL能识别的方式,或者是我这个有什么错误。
哪怕大家多提供几种方式呢我   挨个实验一下也好

------解决方案--------------------
UPDATE ddn0
SET ddn0.personnel = newserv.per
FROM newserv --缺少这个
WHERE ddn0.name = newserv.name
------解决方案--------------------
UPDATE ddn0
SET ddn0.personnel = newserv.per
from newserv--少了这一步
WHERE ddn0.name = newserv.name
------解决方案--------------------
加上了还是 不认。。。?
楼主检查一下ddn0表是否有personnel,newserv表是否有per
ddn0.name, newserv.name--列名是否正确
------解决方案--------------------
--SQL 2000
create table DDNO(name varchar(10), personnel varchar(10))
insert DDNO select 'aa ', 'benny '
union all select 'bb ', 'denny '
union all select 'cc ', 'cooky '
union all select 'dd ', 'elle '

create table newserv(name varchar(10), per varchar(10))
insert newserv select 'cc ', 'dk '
union all select 'dd ', 'john '

update DDNO set personnel=isnull((select per from newserv where name=DDNO.name), personnel)


select * from DDNO

--result
name personnel
---------- ----------
aa benny
bb denny
cc dk
dd john

(4 row(s) affected)