带有随机NEWID列T-SQL的临时表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有随机NEWID列T-SQL的临时表相关的知识,希望对你有一定的参考价值。
我正在寻找一种解决方案来创建一个临时表,我们可以用它来进行数据加扰。第一列将包含id desc的用户id顺序,每个附加列将是NEWID()排序的第一列中的值。这是一个例子:
| ID | RandomID1 | RandomID2 | RandomID3 |
|:--: |:---------: |:---------: |:---------: |
| 12 | 25 | 50 | 48 |
| 25 | 48 | 12 | 36 |
| 36 | 36 | 36 | 12 |
| 48 | 50 | 48 | 50 |
| 50 | 12 | 25 | 25 |
我目前的工作是一次手动创建这一列并粘贴到.csv然后将其导入临时表。
如果为额外随机列的数量提供值会很好,但如果没有,则固定数量的3个额外列将没有问题。
答案
你正在寻找排列。如果数字从1开始并且没有间隙,你可以使用row_number()
:
select id,
row_number() over (order by newid()) as randomid1,
row_number() over (order by newid()) as randomid2,
row_number() over (order by newid()) as randomid3
from t;
如果id不符合这个条件,你可以生成随机排列,然后在原始id中生成排列的join
。
另一答案
我用来生成一个随机数是在这里,这是1到100.使用newid()
select 1+abs(checksum(newid()))%100 -- returns a number under 100 starting at 1, if the 1 becomes 50 then a number between 50 and 150
以上是关于带有随机NEWID列T-SQL的临时表的主要内容,如果未能解决你的问题,请参考以下文章