SQL语用批量更新数据的问题

有表A;字段有名子;编号;地址其中编号为不连续的随意值现在想一次性更新整张表中,名子=‘李明’的数据行的"编号"更新成’LM-001‘,LM-002‘......这样的序... 有 表A ;字段有 名子 ;编号;地址
其中 编号为不连续的随意值
现在想一次性更新整张表中,名子=‘李明’ 的数据行的"编号"
更新成 ’LM-001‘,LM-002‘......这样的序列字段,
小弟对SQL语句不是很了解,不知道这样的循环怎么写
可能是我没有说清楚,不要利用原来的“编号”里的数据,里面的全是错的,就当成空就可以,直接更新
展开
 我来答
雨夜ぜ狂想5f5
2015-05-06 · TA获得超过178个赞
知道小有建树答主
回答量:476
采纳率:33%
帮助的人:259万
展开全部
------------------------建表A,并查询表A的信息-------------------------------
if exists (select * from sysobjects where name='A' and type='U')
drop table A
create table A 
(name varchar(10),id varchar(32),address varchar(64))
insert into A
select '李明','','地址1'
union select '李明','','地址2'
union select '李明','','地址3'
union select '李明','','地址4'
select * from A 
--------------------------利用游标遍历更新A表的信息,并查询更新后的A表信息----------------------------
declare @lsname varchar(10),@lsid varchar(32),@lsrec varchar(3)='0' ,@lsaddress varchar(64)
declare cursor_test cursor for  select name,address from A  where name='李明' 
open cursor_test
fetch next from cursor_test into @lsname,@lsaddress
while @@fetch_status=0
begin
 set @lsrec=@lsrec+1
 set @lsid=substring('LM-000',1,len('LM-000')-len(@lsrec))+@lsrec
 update A
 set id=@lsid
 where name='李明' and address=@lsaddress
 fetch next from cursor_test into @lsname,@lsaddress
end
close cursor_test
deallocate cursor_test
select * from A

百度网友cf38862
2015-05-06 · 超过77用户采纳过TA的回答
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:141万
展开全部

请问一下,你表A的字段编号是什么类型的,如果是int型的,更新成这种格式就有问题

UPDATE A SET A.编号=B.RNUM
FROM A JOIN (
    SELECT 'LM-'+SUBSTRING(2,CONVERT(VARCHAR,1000+ROW_NUMBER() OVER(PARTITION 名字 ORDER BY 编号)),4) RNUM,* FROM A
) B ON (A.编号=B.编号) 
WHERE A.名字='李明'
追问
可能是我没有说清楚,不要利用原来的“编号”里的数据,里面的全是错的,就当成空就可以,直接更新
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传说中的鹰王
2015-05-06 · TA获得超过1053个赞
知道小有建树答主
回答量:923
采纳率:87%
帮助的人:551万
展开全部
create table tmp (bh varchar(20),newbh(20))
insert into tmp(bh,newbh)
select 编号,'LM-'+right('000'+row_number()over(order by 编号),3 ) from A 
where 名字='李明'

update A set  bh = b.newbh from A a,tmp b 
where a.编号=b.bh and a.名字='李明'
追问
可能是我没有说清楚,不要利用原来的“编号”里的数据,里面的全是错的,就当成空就可以,直接更新
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tanfu8031
2015-05-06 · TA获得超过141个赞
知道小有建树答主
回答量:322
采纳率:0%
帮助的人:184万
展开全部
update A set 编号='LM_'+编号 where 名字='李明' 编号想改成001 这种格式的话 需要处理一下编号 再+
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式