SQL语用批量更新数据的问题
有表A;字段有名子;编号;地址其中编号为不连续的随意值现在想一次性更新整张表中,名子=‘李明’的数据行的"编号"更新成’LM-001‘,LM-002‘......这样的序...
有 表A ;字段有 名子 ;编号;地址
其中 编号为不连续的随意值
现在想一次性更新整张表中,名子=‘李明’ 的数据行的"编号"
更新成 ’LM-001‘,LM-002‘......这样的序列字段,
小弟对SQL语句不是很了解,不知道这样的循环怎么写
可能是我没有说清楚,不要利用原来的“编号”里的数据,里面的全是错的,就当成空就可以,直接更新 展开
其中 编号为不连续的随意值
现在想一次性更新整张表中,名子=‘李明’ 的数据行的"编号"
更新成 ’LM-001‘,LM-002‘......这样的序列字段,
小弟对SQL语句不是很了解,不知道这样的循环怎么写
可能是我没有说清楚,不要利用原来的“编号”里的数据,里面的全是错的,就当成空就可以,直接更新 展开
4个回答
展开全部
------------------------建表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
展开全部
请问一下,你表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.名字='李明'
追问
可能是我没有说清楚,不要利用原来的“编号”里的数据,里面的全是错的,就当成空就可以,直接更新
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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.名字='李明'
追问
可能是我没有说清楚,不要利用原来的“编号”里的数据,里面的全是错的,就当成空就可以,直接更新
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update A set 编号='LM_'+编号 where 名字='李明' 编号想改成001 这种格式的话 需要处理一下编号 再+
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询