自动执行基于另一列值的唯一 ID 归因过程

Automate the process of atributing an unique ID based on another column value

我有一个数据库,其中存储了一个默认 ID 为 100 的列和另一个在 SQL 中具有重复字符串值的列。像这样:

100                  BEYONDIFUL !
100                  BEYONDIFUL !
100                  BEYONDIFUL !
100                  BEYONDIFUL !
100                  JAGUAR
100                  JAGUAR
100                  JAGUAR
100                  JAGUAR
...

之前,当我想将 ID 列更新为唯一 ID 时,我会这样做:

UPDATE table
    SET dbo.table.Id = '01'
    WHERE dbo.table.Value LIKE 'THE SENIOR'

所以它会是这样的:

01                  BEYONDIFUL !
01                  BEYONDIFUL !
01                  BEYONDIFUL !
01                  BEYONDIFUL !
02                  JAGUAR
02                  JAGUAR
02                  JAGUAR
02                  JAGUAR
...

但是,这对于非常大的数据库来说并不实用,因为必须对值列中的每个字符串执行此操作。

我怎样才能使它自动进行,以便为每个唯一值(以及重复值)分配一个介于 01 和 n 之间的 ID(n = 不同值的数量)?

您可以使用 row_number 生成您的 ID 值并像这样更新。没有说明应该如何应用编号,这只是根据字母顺序分配编号。

update t set t.Id=v.id
from Table t
join (
 select [value], Row_Number() over (order by [value]) Id
 from Table group by [value]
)v on v.[value]=t.[value]