【问题标题】:How to update many rows with random values如何使用随机值更新多行
【发布时间】:2014-05-20 12:05:54
【问题描述】:

我想对表执行更新查询并将 2 列设置为随机值。这是一个例子:

Update Network_Info_Detail set ART = (rand()*4000)+2, NRT = (rand()*1000)+2

很明显,所有行都将使用随机生成的相同值进行更新,因此我需要创建一个循环来为每一行生成一个随机值。

DECLARE @size integer SET @size = (SELECT Count(*) from Network_Info_Detail) While @size > 1 BEGIN Update top (@size) Network_Info_Detail set ART = (rand()*4000)+2, NRT = (rand()*1000)+2 SET @size = @size - 1 END

此脚本更新具有不同数字的行,但速度很慢。有没有办法提高执行时间?

【问题讨论】:

  • 添加了 sql-server 标记,因为语法(和问题)显然是 SQL Server。

标签: sql sql-server performance random sql-update


【解决方案1】:

您可以使用 SQL Server 技巧来生成随机数:rand(checksum(newid()))

Update Network_Info_Detail
    set ART = (rand(checksum(newid()))*4000)+2,
        NRT = (rand(checksum(newid()))*1000)+2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多