有没有办法将表中每行的某些列设置为某个唯一值,例如
update mytable set myCol=rownum()
在SQL Server 2000上使用SQL(而不是T / SQL)。 我无法触摸架构,但我确实有一两列备用。
答案 0 :(得分:7)
如果您有主键,则可以通过计算行来生成唯一值。例如(将#t
替换为您的表名):
update t
set t.col1 = (select COUNT(*) from #t t2 where t.pk >= t2.pk)
from #t t
如果你有varchar(36)
或更大,你可以生成GUID,保证是唯一的:
update #t
set col1 = NEWID()
如果两者都没有,则可以使用变量。这种技术令人不悦,因为它没有基于设置,但效果很好:
declare @i int
set @i = 1
update #t
set col1 = @i
, @i = @i + 1