sql – 如何随机更新行?

前端之家收集整理的这篇文章主要介绍了sql – 如何随机更新行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过一张桌子,随机擦掉一些数据.我正在做一些数据随机化,将真正的名字变成假的等等.所涉及的一个表中有一列在大约40%的时间内为空.当我分配新的名字时,我的名字随机应用程序可以在其中的一个地方投掷硬币.但是我最好只是做到这一点:随机修剪一些数据.

我有这个代码,这不行,但肯定看起来应该对我来说:

Use MyDb
go 

CREATE VIEW vRandNumber 
AS 
SELECT RAND() as RandNumber 

go  

CREATE FUNCTION RandNumber() 
RETURNS float 
AS 
  BEGIN 
  RETURN (SELECT RandNumber FROM vRandNumber) 
  END 

go  

select dbo.RandNumber()

update names set nickname = null 
where ((select dbo.RandNumber()) > 0.5)

当我运行RandNumber函数的时候很好,很随机.但是当我做更新时,它会更新所有行的一半时间,没有一行的另一半时间.

我希望它每次运行脚本时更新一个随机数.我真的认为像RandNumber这样的函数会对表中的每一行运行一次.显然不是.

这是不是没有循环,没有控制台应用程序?

编辑:我也尝试了几个RAND()的变体,直接在那里得到相同的结果.

解决方法

假设您的Names表有一个主键字段称为Id,这将使随机的50%行中的昵称无效:
update dbo.Names set Nickname = null where Id in
(
    select top 50 percent id from dbo.Names order by NEWID()
)
原文链接:https://www.f2er.com/mssql/75489.html

猜你在找的MsSQL相关文章