好像没见过这样的Sql语句吧!
建议你可以读出所有记录,然后再随机选几条吧!
建议你可以读出所有记录,然后再随机选几条吧!
解决方案 »
- MonthView控件,改变指定日期的背景颜色
- 100分!各位朋友!这是我做的网站www.31qq.com,请各位多多点击,顶者有分!!!!!!!!!!!!!!!!!!!明天就给,绝不食言!!!
- “实时错误94”是什么类型的问题?
- [难]关于菜单与子菜单的问题,问题虽简单,但是处理起来难,请看:
- 一个关于窗体的问题,大虾来帮帮忙
- 请问:通过CrystalReport列印数据库中的图片时,当图片较大时,缩小成指定大小,失真很厉害,可不可以按比例收缩呀,谢谢!!
- 如何使用inet控件ftp服务器上的文件?
- 未经测试的winxp全系列风格控件!!
- 对于在picturebox上描点做图的问题,求教
- 上位机怎么将接收的数据生成XML格式文件保存
- 我有大量的VB源代码
- 如何计算excel 工作表数据的总行数
2. MS 推荐的方法,第一种方法数据多了效率不高use pubs
go
set nocount on
begin transelect au_id,cast( null as float) as rnd into #RndAuthors
from Authors(TABLOCK SERIALIZABLE)
--SELECT * FROM #RndAuthors
create clustered index idx_ci_au_id on #RndAuthors(au_id)declare @key as varchar(11)
select @key=min(au_id) from #RndAuthors/*create a loop that iterates through all the key values,and
for each key,invokes the RAND() function with no input,update
the float column with the random value generated.*/ while @key is not null
begin
update #RndAuthors set rnd=rand() where au_id=@key
select @key=min(au_id) from #RndAuthors where au_id>@key
end
--select * from #RndAuthors
set rowcount 10select a.* from authors as a join #RndAuthors as R
on a.au_id=R.au_id
order by rnd
drop table #RndAuthors
commit tran建立一个Temp Table来生成Radom Seed.再与你的Table关联查询
先取得记录总数,然后在这总数范围内生成10个互不相同的随机数,这个随机数就是记录按照ID排序后的顺序。
取得这些数据的时候可以这样做(假如随机数分别是A,B,C...)
select id from table order by id
skip A-1 (skip为记录指针往下走,具体操作指令依据使用的数据集而定) 第一条
skip B-A 第二条
skip C-B 第三条
...
1.把要提取的数据的主码读到一个临时表中,并且在这个临时表加一个自动增加的ID,和一个bit字段 not null default 0。
2。产生最大ID内的10个随机数,更新ID=(10个随机数)的记录bit字段为true
3.提取这个临时表与原表的连接记录其中bit位为1 and 主码为连接条件。
4.这就搞定了,当然这个10可以改为一个百分比,产生最大ID的某个百分比的记录数,这样的话就会在很多地方使用了。
select top 10 * from table order by newid()
首先把总记录数赋个变量I,这个没问题吧
然后做一个from j=1 to 10 的循环
没次生成一个随机数,拿这个数剩I,然后取整就得到一个记录的BOOKMARK即得到一条随机记录,别的就不说了,类推!
wzrain(晨雨) 的
值得考虑