我有以下查询来更新[SetID]列中的随机数。
“ UPDATE Employee SET SetID = CAST(RAND(CHECKSUM(NEWID()))* 5为INT)+ 1” Update Random Number query
但是有时候我在执行查询后在几行上得到相同的数字。我不想在该行上再次重复以前的号码。提前致谢。 :)
答案 0 :(得分:0)
您的问题非常模棱两可,但是我没有足够的名声让您澄清一下...所以我要解释的是要将SetID设置为1到5之间的数字,而您没有想要使用与UPDATE之前的行相同的数字。如果是这样,那么这就是我的答案:
update E SET SetID = case when SetID <> r1.R1To5 then r1.R1To5
when SetID <> r2.R1To5 then r2.R1To5
when SetID <> r3.R1To5 then r3.R1To5
when SetID <> r4.R1To5 then r4.R1To5
when SetID <> r5.R1To5 then r5.R1To5
else case when SetID = 5 then 1
else SetID +1
end
end
from Employee E
cross apply (VALUES (CAST(RAND(CHECKSUM(NEWID())) * 5 as INT) + 1 )) r1 (R1To5)
cross apply (VALUES (CAST(RAND(CHECKSUM(NEWID())) * 5 as INT) + 1 )) r2 (R1To5)
cross apply (VALUES (CAST(RAND(CHECKSUM(NEWID())) * 5 as INT) + 1 )) r3 (R1To5)
cross apply (VALUES (CAST(RAND(CHECKSUM(NEWID())) * 5 as INT) + 1 )) r4 (R1To5)
cross apply (VALUES (CAST(RAND(CHECKSUM(NEWID())) * 5 as INT) + 1 )) r5 (R1To5)
GO