繁体   English   中英

在DB列中插入唯一PRNG

[英]Insert Unique PRNG into Db column

是否可以在表中的每个现有记录旁边插入一个唯一的伪随机数?

就像是:

UPDATE Products P1
SET RandomId = Random()
WHERE NOT EXISTS (
    SELECT Id
    FROM Products P2
    WHERE RandomId = [The same random as above]
)

(是的,我知道这只会跳过冲突,无法解决冲突)

我知道我可以通过代码甚至在多行语句中迭代地执行此操作-但是是否有单个命令可以为我执行此操作?

注意:这个问题是我个人的看法,因此Microsoft SQL Server和MySQL都对此表示赞赏。 谢谢。

尝试

SELECT NEWID()

将其加载到变量中,因为您必须多次使用相同的值。

切勿对此类操作使用随机数。 您需要使用序列号。 如果您使用随机,则希望像彩票一样随机:)

如果要使用唯一随机数,则需要执行以下操作:

select @max := max( RandomId ) from Products;
update Products set RandomId = @max := @max + Rand() + 1;
  • 此处为1以确保Rand不返回零。

或者您可以创建一个循环,该循环可能不会以宇宙年龄的3倍结束:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM