表名:商品表
序号 商品名称
1 大米
2 黄豆
3 小米
null 云豆
null 红小豆
现在希望将“序号”中null的内容顺序递增填完整,所以写了下面一段代码。
update 商品表
set
序号 = (select MAX(isnull(序号,0)) + 1 from 商品表)
from 商品表
where 序号 is null
执行的结果是null位置重复填入了两个“4”。
请帮我改一改,谢谢。
序号 商品名称
1 大米
2 黄豆
3 小米
null 云豆
null 红小豆
现在希望将“序号”中null的内容顺序递增填完整,所以写了下面一段代码。
update 商品表
set
序号 = (select MAX(isnull(序号,0)) + 1 from 商品表)
from 商品表
where 序号 is null
执行的结果是null位置重复填入了两个“4”。
请帮我改一改,谢谢。
declare @i int
set @i = 1update tb
set id = @i,@i = @i+1
declare @i int
set @i = (select max(id) from tb)update tb
set id = @i,@i = @i+1
where id is null
--ver > =2005
update tb
set id = row_number() over( order by getdate())
where id = null
??? 版本是?
我正在写补充,你就回复了,真是快。我补充的内容就是:在不使用变量的前提下。
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([序号] int,[商品名称] varchar(6))
insert [TB]
select 1,'大米' union all
select 2,'黄豆' union all
select 3,'小米' union all
select null,'云豆' union all
select null,'红小豆'select * from [TB]UPDATE dbo.TB
SET [序号] = T.num
FROM(
SELECT num = ROW_NUMBER () OVER( ORDER BY GETDATE()),[商品名称] FROM dbo.TB)T
WHERE T.[商品名称] = TB.[商品名称] AND TB.[序号] IS null/*
序号 商品名称
1 大米
2 黄豆
3 小米
4 云豆
5 红小豆*/
create table 商品表 (序号 int,商品名称 varchar(10))
insert into 商品表 values (1,'大米')
insert into 商品表 values (2,'黄豆')
insert into 商品表 values (3,'小米')
insert into 商品表 values (null,'云豆')
insert into 商品表 values (null,'红小豆')with cte
as (select row_number() over( order by getdate()) id,序号,商品名称 from 商品表)update cte
set 序号=id
from cte
where 序号 is null
insert into 商品表 values (1,'大米')
insert into 商品表 values (2,'黄豆')
insert into 商品表 values (3,'小米')
insert into 商品表 values (null,'云豆')
insert into 商品表 values (null,'云豆')自增的话见7楼:
序号 商品名称
1 大米
2 黄豆
3 小米
4 云豆
5 云豆6楼的不自增的:
序号 商品名称
1 大米
2 黄豆
3 小米
4 云豆
4 云豆
--如果商品没重复的话
create table #pro(ID int, pro varchar(10))
insert into #pro
select 1,'大米'
union all select 2,'黄豆'
union all select 3,'小米'
union all select null,'红豆'
union all select null,'红小豆'update #pro set ID=(select count(0)+1 from #pro where checksum(ID,Pro)>checksum(a.ID,a.Pro))
from #pro as a
where ID is nullselect * from #pro order by ID
--
ID pro
----------- ----------
1 大米
2 黄豆
3 小米
4 红小豆
5 红豆(5 行受影响)
或者给你的表加一个自增列
alter table tt add column id int identity(1,1)
1.select 含null的记录到临时表
2.创建触发器,如果出入null的自动在前面的记录数上加1
3.再把临时表中数据插回去