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