是否可以在表格中的每个现有记录旁边插入唯一的伪随机数?
类似的东西:
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都对此表示赞赏。感谢。
答案 0 :(得分:0)
尝试
SELECT NEWID()
将其加载到变量中,因为您必须多次使用相同的值。
答案 1 :(得分:0)
切勿使用随机进行此类操作。您需要使用序列号。如果你使用随机,你期望像彩票一样随机:)
如果您想使用独特的随机,您需要执行以下操作:
select @max := max( RandomId ) from Products;
update Products set RandomId = @max := @max + Rand() + 1;
或者你可以创建一个可能不会以宇宙年龄的3倍结束的循环:)