求sql 不重复的随机数

wfcfan 2009-08-09 12:21:41
现在要生成100W不重复的n位随机数,
求一个效率高的算法!


...全文
1822 61 打赏 收藏 转发到动态 举报
写回复
用AI写文章
61 条回复
切换为时间正序
请发表友善的回复…
发表回复
Delta 2009-08-12
  • 打赏
  • 举报
回复
学习并收藏了。
Eagle_ice 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 liangck 的回复:]
SQL code转 zjcxc

最近在论坛看到有人问,如何快速生成100万不重复的8位编号,对于这个问题,有几点是需要注意的:1. 如何生成8位随机数,生成的数越随机,重复的可能性当然越小2. 控制不重复3. 考虑性能
针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导


生成100万条8位不重复数据的示例USE tempdbGO-- 创建测试表CREATE¡­
[/Quote]
强大...
星火191314 2009-08-11
  • 打赏
  • 举报
回复
学习了
zzs_happy 2009-08-11
  • 打赏
  • 举报
回复
厉害,mark!
YangWenChaoX 2009-08-11
  • 打赏
  • 举报
回复
我用的GUID
小李木耳 2009-08-10
  • 打赏
  • 举报
回复
select 人 from 人类
where ROWNUM<=1百万
SQL77 2009-08-10
  • 打赏
  • 举报
回复
select TOP 10000 rn=identity(int),id=newid() into # from syscolumns a ,syscolumns b,syscolumns c,syscolumns d,syscolumns e

select ABS(CHECKSUM(ID))
from # a
where NOT exists(
select 1
from #
where id=a.id
and rn<>a.rn)

自己测一下就好了,弄不了那么多.回复内容过长
htl258_Tony 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 50 楼 wfcfan 的回复:]
数字
[/Quote]
看22楼.
jeansy911 2009-08-10
  • 打赏
  • 举报
回复
什么随机数。。。什么进制的?
wfcfan 2009-08-10
  • 打赏
  • 举报
回复
数字
bennyrongrong 2009-08-10
  • 打赏
  • 举报
回复
顶一个
振乾 2009-08-10
  • 打赏
  • 举报
回复
select top 100000 * from CS_Match_Stats order by NEWID()
SQL77 2009-08-09
  • 打赏
  • 举报
回复
SELECT CONVERT(INT,ABS(CHECKSUM(CONVERT(BINARY,NEWID()))),8)
--小F-- 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 herowang 的回复:]
SQL codecreatetable TimeSquare_Code(idbigintidentity(1,1)PRIMARYKEYCLUSTERED,codebigint,statusintdefault0)gocreateprocedure sp_TimeSquare_randomcodeasinsertinto timesquare_Code(code)selecttop1000000 c¡­
[/Quote]

学习
  • 打赏
  • 举报
回复
create table TimeSquare_Code(id bigint identity(1,1) PRIMARY KEY CLUSTERED,code bigint,status int default 0)
go
create procedure sp_TimeSquare_randomcode
as
insert into timesquare_Code(code)
select top 1000000 code=900000000000*RAND(CHECKSUM(NEWID()))+100000000000 from syscolumns a,syscolumns b,syscolumns c
go
exec sp_timesquare_randomcode
go
select * from timesquare_code
go
drop table timesquare_code
drop procedure sp_TimeSquare_randomcode
feixianxxx 2009-08-09
  • 打赏
  • 举报
回复
declare @n int
set @n=? --n位
select top 1000000 left(abs(checksum(newid())),@n) as id
from syscolumns a ,syscolumns b,syscolumns c,syscolumns d,syscolumns e
feixianxxx 2009-08-09
  • 打赏
  • 举报
回复
select top 1000000 abs(checksum(newid()))  as id 
from syscolumns a ,syscolumns b,syscolumns c,syscolumns d,syscolumns e
sdhdy 2009-08-09
  • 打赏
  • 举报
回复
--随即生成100W不重复的6位数。
select top 1000000 left(abs(checksum(newid())),6) from syscolumns a ,syscolumns b,syscolumns c,syscolumns d,syscolumns e
--用时8秒。
feixianxxx 2009-08-09
  • 打赏
  • 举报
回复
select top 1000000 checksum(newid()) *1000000
from syscolumns a ,syscolumns b,syscolumns c,syscolumns d,syscolumns e
sdhdy 2009-08-09
  • 打赏
  • 举报
回复
select top 1000000 newid() from syscolumns a ,syscolumns b,syscolumns c,syscolumns d,syscolumns e
加载更多回复(40)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧