如何在SQL中使一列数据递增

[复制链接]
查看11 | 回复6 | 2008-5-31 01:02:30 | 显示全部楼层 |阅读模式
我有一个表,有一个字段,都是数字的,其中有200条是空的,我想让空的部分按照上面的数字递增下来写入数据,应该怎样写语句呢?
例如:
IDYY
1aa
2f f
3dd
4ee

qq

ww

rr
我想在字段ID下的写入记录,从上一记录4开始递增写入5、6、7.应该怎么写语句呢?
谢谢!
回复

使用道具 举报

千问 | 2008-5-31 01:02:30 | 显示全部楼层
你说的空是NULL吧?
declare @i int
select @i=max(id) from 表
update 表
set @i=@i+1,id=@i
where id is null
回复

使用道具 举报

千问 | 2008-5-31 01:02:30 | 显示全部楼层
用临时表。
临时表有一个自动增长字段。
SELECTIDENTITY(INT,1,1)AS ID ,YYINTOtttFROM TableName;
SELECT * FROMttt ;
1aa
2f f
3dd
4ee
5qq
6 ww
7
rr
回复

使用道具 举报

千问 | 2008-5-31 01:02:30 | 显示全部楼层
原帖由 沉默用户 于 2008-4-10 14:09 发表
你说的空是NULL吧?
declare @i int
select @i=max(id) from 表
update 表
set @i=@i+1,id=@i
where id is null

是种不错的办法。
回复

使用道具 举报

千问 | 2008-5-31 01:02:30 | 显示全部楼层
原帖由 沉默用户 于 2008-4-10 14:09 发表
你说的空是NULL吧?
declare @i int
select @i=max(id) from 表
update 表
set @i=@i+1,id=@i
where id is null

学习了。
回复

使用道具 举报

千问 | 2008-5-31 01:02:30 | 显示全部楼层
原帖由 htl258 于 2008-4-14 00:29 发表
是种不错的办法。


如果原表序号是,零散分布呢(中间空若干行又有id)?这样maxid 后结果不对的。
回复

使用道具 举报

千问 | 2008-5-31 01:02:30 | 显示全部楼层
在SQL2005中试验通过
declare @a int set @a=200
while(@a>=0)
begin
update top (1) 表名
set id=(select max(id) from 表名)+1
where id is null
set @a=@a-1
end
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行