我有一张有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] 删除。
我来说两句