日期:2014-05-18  浏览次数:20446 次

怎样用 update 更新每一条记录
表 Article 
-------------------------------------
id article_no

00000000 云天房地产开发有限公司简介
00000000 云天商贸广场鸟瞰效果图
00000000 镇东新桥仰视效果图
00000000 云天市政工程有限公司简介
00000000 镇东新桥俯视效果图
... ....


我要改成如下效果:
id article_no

00000001 云天房地产开发有限公司简介
00000002 云天商贸广场鸟瞰效果图
00000003 镇东新桥仰视效果图
00000004 云天市政工程有限公司简介
00000005 镇东新桥俯视效果图
... ....

sql语句:
update Article
set a.article_no=ISNULL(right('0000000000'+cast(cast(max(a.assort_no) as int)+1 as varchar(10)),10),'0000000000')
from Article a,Article b  
where a.article_no=b.article_no

提示: 'Article' 不明确。

------解决方案--------------------
把update Article 
-------------
update a

------解决方案--------------------
SQL code
--原始数据:@Article
declare @Article table(id varchar(8),article_no varchar(26))
insert @Article
select '00000000','云天房地产开发有限公司简介' union all
select '00000000','云天商贸广场鸟瞰效果图' union all
select '00000000','镇东新桥仰视效果图' union all
select '00000000','云天市政工程有限公司简介' union all
select '00000000','镇东新桥俯视效果图'

select * from @Article
/*
id       article_no                 
-------- -------------------------- 
00000000 云天房地产开发有限公司简介
00000000 云天商贸广场鸟瞰效果图
00000000 镇东新桥仰视效果图
00000000 云天市政工程有限公司简介
00000000 镇东新桥俯视效果图
*/

declare @id int
set @id = 0
update @Article set id=replicate('0',8-len(@id))+ltrim(@id),@id=@id+1

select * from @Article
/*
id       article_no                 
-------- -------------------------- 
00000001 云天房地产开发有限公司简介
00000002 云天商贸广场鸟瞰效果图
00000003 镇东新桥仰视效果图
00000004 云天市政工程有限公司简介
00000005 镇东新桥俯视效果图
*/

------解决方案--------------------
SQL code

楼上的把最简单的方法写了,,只好另外写一个了
create table Article (id varchar(10),article_no varchar(26))
insert Article
select '00000000','云天房地产开发有限公司简介' union all
select '00000000','云天商贸广场鸟瞰效果图' union all
select '00000000','镇东新桥仰视效果图' union all
select '00000000','云天市政工程有限公司简介' union all
select '00000000','镇东新桥俯视效果图'


select pid=identity(int,1,1),* into #temp from Article
update Article set id=right(a.id+cast(pid as varchar),8) from Article a,#temp b where a.article_no=b.article_no