求:更新一列数据为不同的随机数?在线等!
我用一句update tb set Keys = cast(rand()*1000000 as int)时列Keys的值都变成同一个值了,
就是这样的
ID Names Keys
1 a 158623
2 b 158623
3 c 158623
4 d 158623
5 e 158623
我想更新后这样
ID Names Keys
1 a 158623
2 b 456875
3 c 956325
4 d 758425
5 e 762158
请问该如何写啊,如果用函数,这个函数应该如何写?
问题点数:40、回复次数:7Top
1 楼Seaoh(Seaoh.com)回复于 2005-06-03 10:50:08 得分 40
update tb set Keys = cast(rand(id)*1000000 as int)Top
2 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-03 10:53:47 得分 0
update tb set Keys = newid()
Top
3 楼yjdn(人形机器)回复于 2005-06-03 10:54:09 得分 0
我看你写个触发器好一点Top
4 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-03 10:57:19 得分 0
上面的好像不行:
update tb set Keys = convert(int,rand(id)*1000000)Top
5 楼My65sky(一浪)回复于 2005-06-03 11:00:23 得分 0
update tb set Keys = convert(int,rand(id)*1000000)生成的好象有一定的规律
触发器怎么做?Top
6 楼yjdn(人形机器)回复于 2005-06-03 11:19:02 得分 0
好像触发器也不行,用循环更新肯定可以,不过似乎麻烦了点,关注一下Top
7 楼posonhuang(自知才疏学浅)回复于 2005-06-03 15:42:25 得分 0
通常用 RAND 生成随机数的方法是,用相对不定的某个值作为种子值,例如累加 GETDATE 的几个部分:
SELECT RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) )
Top




