Sql 用随机值替换列值
我想用随机值替换列中的值Sql 用随机值替换列值,sql,sql-server-2005,Sql,Sql Server 2005,我想用随机值替换列中的值 NO LINE -- ---- 1 1 1 2 1 3 1 4 2 1 2 2 3 1 4 1 4 2 我想随机化列NO并替换为随机值。我有500万条记录,下面的脚本会给我500万条唯一的NO,但正如你所看到的,NO不是唯一的,我希望为相同的NO分配相同的随机值 UPDATE table1 SET NO= abs(checksum(NewId())) % 100000000 我希望我的结果数据集如下所示 NO L
NO LINE
-- ----
1 1
1 2
1 3
1 4
2 1
2 2
3 1
4 1
4 2
我想随机化列NO并替换为随机值。我有500万条记录,下面的脚本会给我500万条唯一的NO,但正如你所看到的,NO不是唯一的,我希望为相同的NO分配相同的随机值
UPDATE table1
SET NO= abs(checksum(NewId())) % 100000000
我希望我的结果数据集如下所示
NO LINE
------ ----
99 1
99 2
99 3
99 4
1092 1
1092 2
3456 1
41098 1
41098 2
我建议兰德公司加入种子:
UPDATE table1
SET NO = FLOOR(rand(NO) * 100000000);
这会有轻微的冲突风险,因此两个不同的NO行可能会获得相同的值
如果数字不需要是随机的,可以按任意顺序给它们连续的值,并避免冲突:
with toupdate as (
select t1.*,
dense_rank() over (order by rand(NO), no) as new_no
from t
)
update toupdate
set no = new_no;
这就是我所做的,但在更新多部分标识符时出现错误。无法绑定新的声明号。将CTE_toupdate作为select Claim_no,根据randClaim_no对订单进行密集排序,Claim_no作为New_Claim_no从HospiceFinal-order by Claim_no更新HospiceFinal set Claim_no=toupdate.New_Claim_no从CTE_toupdate t1内部加入HospiceFinal t2于t1.Claim_no=t2.Claim_no