SQL Server 2012:更新具有唯一编号的行

Tripurari yadav

我有一张有5万条记录的桌子。现在,我想用随机数更新表的一列。该数字应为7位数字。

我不想用过程或循环来做到这一点。

PinDetailId  PinNo
--------------------
783          2722692
784          9888648
785          6215578
786          7917727

我已经尝试过此代码,但无法成功。我需要7位数字。

SELECT 
    FLOOR(ABS(CHECKSUM(NEWID())) / 2147483647.0 * 3 + 1) rn, 
    (FLOOR(2000 + RAND() * (3000 - 2000) )) AS rn2 
FROM
    [GeneratePinDetail]

在此处输入图片说明

阿赞·查尔斯

随机

对于随机数,可以使用ABS(CHECKSUM(NewId())) % range + lowerbound:(
来源:如何为TSQL Select中的每一行生成随机数?

INSERT INTO ResultsTable (PinDetailId, PinNo)
SELECT PinDetailId, 
       (ABS(CHECKSUM(NewId())) % 1000000 + 1000000) AS `PinNo`
FROM GeneratePinDetail
ORDER BY PinDetailId ASC;

可能不是唯一的

我不能保证这些将是唯一的。但应平均分配(任意7位数字的机会相等)。如果要检查重复项,可以运行以下命令:

SELECT PinDetailId, PinNo 
FROM ResultsTable result
INNER JOIN (
    SELECT PinNo
    FROM ResultsTable
    GROUP BY PinNo
    HAVING Count(1) > 1
) test
ON result.PinNo = test.PinNo;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章