DECLARE @TEMP TABLE(C INT IDENTITY(1, 1), A NVARCHAR(100))INSERT INTO @TEMP SELECT A FROM Table1UPDATE Table1 SET C = B.C FROM @TEMP AS B WHERE Table1.A = B.A以上是使用IDENTITY做的 有一个假设条件,即你的A为PK或A具有唯一性如果没有的话,可能需要对此进行调整或使用另外的方法
Create Table TEST(A Int,B Varchar(10),C Varchar(36)) Insert TEST Select 1,'aa',NewID() Union All Select 2,'bb',NewID() Union All Select 3,'cc',NewID() Union All Select 4,'dd',NewID() Union All Select 5,'ee',NewID() GO Select *From TEST GO Drop Table TEST --Result /* A B C 1 aa 43B5CA6B-C3D7-4A04-9075-F179B02F8A44 2 bb 30190F6B-EB8E-4DD0-A4D4-FD80CFA354C2 3 cc 7E5DC850-997C-4B4F-B5A9-6B1BD2E6D1F5 4 dd 02138DBE-EBA2-4CC0-A5A7-7C903F29A883 5 ee 3233571E-6A7E-4B74-B400-55881D112D29 */
1、先将此字段全部更新为0,然后加索引
2、使用一个适当的随机数SEED,生成随机数后,判断此随机数是否已经使用,然后update一条记录,可能用游标会比较容易处理
SELECT A FROM Table1UPDATE Table1 SET C = B.C
FROM @TEMP AS B
WHERE Table1.A = B.A以上是使用IDENTITY做的
有一个假设条件,即你的A为PK或A具有唯一性如果没有的话,可能需要对此进行调整或使用另外的方法
Insert TEST Select 1,'aa',NewID()
Union All Select 2,'bb',NewID()
Union All Select 3,'cc',NewID()
Union All Select 4,'dd',NewID()
Union All Select 5,'ee',NewID()
GO
Select *From TEST
GO
Drop Table TEST
--Result
/*
A B C
1 aa 43B5CA6B-C3D7-4A04-9075-F179B02F8A44
2 bb 30190F6B-EB8E-4DD0-A4D4-FD80CFA354C2
3 cc 7E5DC850-997C-4B4F-B5A9-6B1BD2E6D1F5
4 dd 02138DBE-EBA2-4CC0-A5A7-7C903F29A883
5 ee 3233571E-6A7E-4B74-B400-55881D112D29
*/