MS SQL Server - 为用户创建唯一键

时间:2012-10-09 17:55:15

标签: sql-server

我有一个员工表,其中包含同一个人的多个条目。 使用他们的SIN编号,您可以确定他们是否是同一个人。

示例:

Id  Name    SIN
1   John Smith  1234
2   John Smith  1234
3   Jess Jones  4321

我希望能够将此表中的所有人复制到新表中。 我想创建一个新列(UserKey [GUID]),该列对于表中多次使用的用户是唯一的。 我想使用这个新的UserKey [GUID]而不是SIN号。

Example:
Id  Name        UserKey (Guid)
1   John Smith  1234DFKJ2328LJFD
2   John Smith  1234DFKJ2328LJFD
3   Jess Jones  9543SLDFJ28EKJFF

我不知道如何处理此查询。任何帮助都会很棒。

我正在使用MS SQL Server 2008。

感谢。

1 个答案:

答案 0 :(得分:3)

您可以创建临时表,将SIN映射到新的GUID。然后,您可以将原始表与映射表连接起来,并从中创建新表。

# Create a table called #temp with the mappings SID => new GUID
SELECT SIN, newid() UserKey INTO #temp FROM (SELECT DISTINCT SIN FROM Table1) a

# ...and join that and the original table to a new table.
SELECT id, name, userkey
INTO NewTable
FROM Table1 t1
JOIN #temp t2
ON t1.SIN = t2.SIN

SQLFiddle here