使用UPDATE SET FROM模式从数据生成唯一键

时间:2011-12-28 16:20:37

标签: sql-server sql-server-2005 tsql

我有一个数据库登台表,用于存储从另一个系统输入的数据,然后再用它来填充多个数据库表。

我依靠数据中的“主键”获得独特的数据,但事实证明它们根本不是唯一的,例如键“1”可以应用于“值A”和“值B”,因此它显然不是主键!!!

由于我不再信任数据,我正在考虑根据登台表的内容生成自己的密钥。例如。对于“列A”我想基于该列中的不同值生成基于唯一整数的键。这是通过UPDATE SET FROM还是其他机制实现的?

2 个答案:

答案 0 :(得分:1)

出于好奇,为什么不根据行号生成唯一键或滚动自己的身份列?

答案 1 :(得分:1)

  

我想基于distinct生成一个唯一的基于整数的键   该列中的值

您可以使用dense_rank()和CTE对行进行编号。

;with C as
(
  select ID,
         dense_rank() over(order by ColumnA) as rn
  from YourTable
)
update C
set ID = rn

在此尝试:http://data.stackexchange.com/stackoverflow/q/122782/