带有随机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的临时表的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL中的随机数

T-SQL 之 表变量和临时表

如何向SQLSERVER中表中的一列update成随机数?

使用 T-SQL 生成随机字符串

SQLServer : 几个特殊函数(RAND,CHECKSUM, NEWID)

T-SQL 之 公用表表达式(CTE)