mysql:select * from tablename order by rand() limit 10sqlserver:select top 10 * from tablename order by NEWID()
oracle:使用 dbms random value的一种方法
http://www.gaodaima.com/34589.html四种数据库,取随机记录的方法_sqlserver
SQL> select *from (select *from t order by dbms_random.value) where rownum<10;
A ———- 39 101 134 5 83 97 96 140 81
已选择9行。
SQL> select *from (select *from t order by dbms_random.value) where rownum<10;
A ———- 27 118 141 103 128 10 142 68 74 有人说这是一种效率最差的方法,恳请告知比这更好的解决方案!
access(一):
yourstr="*1*3*4*6*12*…."sql="select top 10 * form yourdb where instr(‘*’&id&’*’,’"&yourstr&"’)<>0
ACCESS(二):
<% n=10 ”取任意10条记录 set rs = server.CreateObject ("adodb.recordset") sql = "select * from table" rs.open sql,conn,1,1 count=rs.recordcount ”记录总数 IF Count<>empty Then Randomize for i = 1 to n ”循环n次 num=Fix(Rnd*count) ”num便是随机产生的记录行数,用Fix(),使其不会大于count值。 rs.move num ”移到改随机行 Response.write rs(0) ”出该条记录 rs.movefirst ”别忘了再把指针移到第一条 next End IF rs.close set rs = nothing%>
SQL> select *from (select *from t order by dbms_random.value) where rownum<10;
A ———- 39 101 134 5 83 97 96 140 81
已选择9行。
SQL> select *from (select *from t order by dbms_random.value) where rownum<10;
A ———- 27 118 141 103 128 10 142 68 74 有人说这是一种效率最差的方法,恳请告知比这更好的解决方案!
ACCESS(一):
yourstr="*1*3*4*6*12*…."sql="select top 10 * form yourdb where instr(‘*’&id&’*’,’"&yourstr&"’)<>0
ACCESS(二):
<% n=10 ”取任意10条记录 set rs = server.CreateObject ("adodb.recordset") sql = "select * from table" rs.open sql,conn,1,1 count=rs.recordcount ”记录总数 IF Count<>empty Then Randomize for i = 1 to n ”循环n次 num=Fix(Rnd*count) ”num便是随机产生的记录行数,用Fix(),使其不会大于count值。 rs.move num ”移到改随机行 Response.write rs(0) ”出该条记录 rs.movefirst ”别忘了再把指针移到第一条 next End IF rs.close set rs = nothing%>
欢迎大家阅读《四种数据库,取随机记录的方法_sqlserver》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码