表格中有一列“钥匙”。使用像这样的数据
Key Name
1 aaa
2 sads
null asd
null asd
现在我需要用3和4替换空值。我该怎么做。
答案 0 :(得分:2)
根据您使用的SQL Server版本,您可以使用TOP或SET ROWCOUNT将UPDATE限制为单行。这样的事情会起作用:
select top 1 * from sysobjects
WHILE @@ROWCOUNT > 0
BEGIN
UPDATE TOP 1 Keys SET Key = (SELECT MAX(Key) from Keys)+1 WHERE Key is null
END
但并不理想。我想不出另一种解决重复行的方法 - 除非这是一次性任务,在这种情况下临时添加IDENTITY列会起作用。
答案 1 :(得分:0)
如果您可以将数据(临时)放入单独的表中,则可以使用ROW_COUNT():
declare @Keys table ([Key] int not null, [Name] varchar(50) null);
insert into @Keys ([Key], [Name])
select [Key], [Name]
from [Keys]
where [Key] is not null
union all
select [Key] = row_number() over (order by [Name]) +
(select max([Key]) from [Keys]),
[Name]
from [Keys]
where [Key] is null;
truncate table [Keys];
insert into [Keys] select * from @Keys;