代码之家  ›  专栏  ›  技术社区  ›  mikemay

如何在SQLServer上为列中的每一行设置唯一id

  •  3
  • mikemay  · 技术社区  · 16 年前

    有没有办法将表中每一行的某一列设置为某个唯一的值。

    update mytable set myCol=rownum() 
    

    在SQLServer2000上使用SQL(不是T/SQL)。 我不能接触这个模式,但我有一个或两个备用列。

    1 回复  |  直到 16 年前
        1
  •  8
  •   Andomar    16 年前

    如果您有主键,则可以通过计算行数来生成唯一的值。例如(替换 #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