根据另一列值自动分配唯一ID的过程



我有一个数据库,其中存储了一个默认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
...

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

如何使其自动,以便对于每个唯一的值(并且是重复的(,它都在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]

最新更新