
核心思路:在SQL Server中,可以用order by newid()实现随机排序
--测试数据with tmp(a,b) as (
select 1,2 union all
select 1,3 union all
select 2,3 union all
select 2,4 union all
select 2,9)
--利用row_number和order by newid()实现随机取一行
select a,b from (
select a,b
,row_number() over (partition by a order by newid()) as seq
from tmp
) t where seq=1
第一次运行结果:
第二次运行结果:
数据库的随机查询SQL1. Oracle,随机查询20条
select * from
(
select * from 表名
order by dbms_random.value
)
where rownum <= 20
2.MS SQL Server,随机查询20条
select top 20 * from 表名order by newid()
3.My SQL:,随机查询20条
select * from 表名 order by rand() limit 20
首先看一下你的数据量多不多!不过一般使用Access的数据也不会太多!
你可以这样做,用一个数组,将数据库中的记录不会有重复的列的值储存下来。
然后使用随机函数,从数组中抽区随机一个!
例子:
Dim DBVal()
………………(省略从数据库中读取数据的代码)
这里要强调一点,你数据库中的记录有多少条,你就要重新定义数组的维数上限
可以使用Redim关键字
Redim DBVal(1 To [数据库游标].RecordCount)
然后就可以开始抽选了:
Dim intRecordNum
Randomize '如果你的程序只抽取一条记录,则可以不要这个
intRecordNum = Int((UBound(DBVal) - 1) * Rnd) + 1
到这里,已经可以得出想要抽取的记录关键字了,你可以根据DBVal(intRecordNum)作为条件,搜索数据库中与该变量相符合的数据
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)