sql-server - 如何为 SQL Server 上的列中的每一行设置唯一 ID

标签 sql-server

有没有办法将表格中每一行的某些列设置为某个唯一值,例如

update mytable set myCol=rownum() 

在 SQL Server 2000 上使用 SQL(不是 T/SQL)。 我无法触摸架构,但我确实有一两列备用。

最佳答案

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

关于sql-server - 如何为 SQL Server 上的列中的每一行设置唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170556/

相关文章:

SQL 将两个具有键的表连接到不同的列中

c# - ADO.NET 中的连接异常

mysql - 数据传输-mysql和sql

sql-server - Count(*)自动四舍五入

php - 使用 Composer 安装 MSSQL

sql-server - 是否可以获得单个记录的 PERCENT_RANK,但相对于整个表?

sql-server - 将行插入表中,只有一列、主键和标识

sql - 删除所有空格并将 SQL 中的多行合并为单行

sql - 从父节点 xml sql server 检索所有子节点

sql - SQL Server 上的内连接 UDF