首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

update rand,该怎么解决

2012-08-09 
update rand比如 table 用100条数据现在 想将total更新为 30 到 49 的 随机数update table set total CA

update rand
比如 table 用100条数据

现在 想将total更新为 30 到 49 的 随机数
update table set total = CAST( FLOOR(RAND()*20 + 30) AS INT)

但是 更新之后 每条 数据生成的随机数是一样的。。
不是想要的效果,
求助

[解决办法]

SQL code
gocreate table #tbl(id int identity(1,1),value int)declare @a intset @a=1while @a<=100begininsert #tbl(value)select cast(FLOOR(RAND()*20 + 30) as int)set @a=@a+1endupdate [table] set total=valuefrom #tbl a where a.id=[table].col--你那个实际上就产生了一个随机数,然后付给了你的表total字段的那一百航
[解决办法]
清空表数据这样:
SQL code
truncate table #tbl
[解决办法]
SQL code
--新建临时表#tbcreate table #tb(id int identity(1,1) not null,num int null)insert into #tb values (43),(54),(54),(43),(65),(56),(65),(63)select * from #tb--通过表变量,循环遍历#tb中每一条记录,并且更新num字段declare @tab table(id int null,num1 int null)insert into @tab select * from #tb declare @i int =0,@tempId int =0while @i<(select COUNT(*) from @tab)beginSET ROWCOUNT 1SELECT @tempId=[id] FROM @tabSET ROWCOUNT 0   update #tb set num=cast(FLOOR(RAND()*20 + 30) as int) where id=@tempIddelete from @tab where id=@tempIdend 

热点排行