将唯一PRNG插入Db列

时间:2012-01-26 16:07:58

标签: mysql sql sql-server

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

类似的东西:

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都对此表示赞赏。感谢。

2 个答案:

答案 0 :(得分:0)

尝试

SELECT NEWID()

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

答案 1 :(得分:0)

切勿使用随机进行此类操作。您需要使用序列号。如果你使用随机,你期望像彩票一样随机:)

如果您想使用独特的随机,您需要执行以下操作:

select @max := max( RandomId ) from Products;
update Products set RandomId = @max := @max + Rand() + 1;
  • 1是为了确保兰德不会返回零。

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