gpt4 book ai didi

SQL 服务器 2012 : update a row with unique number

转载 作者:搜寻专家 更新时间:2023-10-30 20:24:14 24 4
gpt4 key购买 nike

我有一个包含 50k 条记录的表。现在我想用一个随机数更新表的一列。号码应为 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]

enter image description here

最佳答案

随机

对于随机数,您可以使用 ABS(CHECKSUM(NewId())) % range + lowerbound:
(来源:How do I generate random number for each row in a 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;

关于SQL 服务器 2012 : update a row with unique number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45768587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com