T-SQL UPDATE 中每一行的 RAND 都没有不同 [英] RAND not different for every row in T-SQL UPDATE

查看:31
本文介绍了T-SQL UPDATE 中每一行的 RAND 都没有不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下 T-SQL 来更新包含测试数据的表:

I have the follow T-SQL to update a table with test data:

UPDATE
SomeTable
SET
    Created = GETDATE ( ) - CAST ( RAND ( ) * 365 AS int ) ,
    LastUpdated = GETDATE ( ) - CAST ( RAND ( ) * 365 AS int )

我希望它选择过去一年中的随机日期,不幸的是它对每一行使用相同的日期.让它更新的每一行都是随机的最好方法是什么?

I want it to pick random daes in the past year, unfortunately it uses the same date for every row. what is the best way to get it to be random every row it updates?

推荐答案

使用 RAND(CHECKSUM(NEWID()))

  • NEWID 返回一个 GUID
  • CHECKSUM 使其成为整数,随机
  • int 种子兰德

在您的情况下,您可以对校验和取模,因为 CHECKSUM(NEWID()) 已经是随机的.

In your case, you could modulo the checkum because CHECKSUM(NEWID()) is already random.

CHECKSUM(NEWID()) % 365

这篇关于T-SQL UPDATE 中每一行的 RAND 都没有不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆