Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用随机值替换列值_Sql_Sql Server 2005 - Fatal编程技术网

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