四种数据库,取随机记录的方法

原创 2005年03月03日 09:08:00

mysql:select * from tablename order by rand() limit 10
sqlserver:select top 10 * from tablename order by NEWID()

ORACLE:使用 dbms random value的一种方法


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
%>

[Mysql]从表中随机取出一条数据sql

这是前一段时间做一个需求的调研,需求就是很快的从mysql一张表中随机取出一条数据,...
  • lzz957748332
  • lzz957748332
  • 2014年10月19日 21:05
  • 1942

mysql 分组和获取随机记录

现在有一张表 info 如图1-1所示,我想要每个class返回一条随机记录: 图1-1 数据源 我们知道 GROUP BY 可以实现分组,分组的效果如图1-2 所示 ...
  • qasxcvgh
  • qasxcvgh
  • 2016年10月11日 13:21
  • 1141

从Mysql某一表中随机读取n条数据的SQL查询语句

若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机...
  • flower_vip
  • flower_vip
  • 2016年12月07日 15:53
  • 3800

mongodb 随机获取一条记录的方法

本文介绍php7.0以上使用mongdb的基本方法,并提供mongodb随机获取一条记录的测试实例。...
  • fdipzone
  • fdipzone
  • 2016年08月15日 15:02
  • 20391

mysql 随机取一条或多条数据 高效率

本文转载地址:http://www.cnblogs.com/hfww/archive/2011/07/08/2223359.html 本文详细解说了MySQL Order By Rand()效率优化...
  • juner_ge
  • juner_ge
  • 2015年07月15日 09:54
  • 13543

SQL server 在大数据中随机取数

Summary: The authors offer new ideas on how to select random rows from a large table. (4 printed pag...
  • luby
  • luby
  • 2013年10月15日 09:17
  • 2080

MySQL随机获取数据的方法,支持大数据量

最近做项目,需要做一个从mysql数据库中随机取几条数据出来。 总所周知,order by rand 会死人的。。因为本人对大数据量方面的只是了解的很少,无解,去找百度老师。。搜索结果千篇一律。特发...
  • xyw591238
  • xyw591238
  • 2016年07月20日 09:11
  • 2636

MySQL性能优化(特别是最后保证随机查到数据的思想,而不是前几条)

http://blog.csdn.net/l1028386804/article/details/42007449 如何从MySQL一个数据表中提取一条随机的效率,同时要保证效率最高。 ...
  • qq_16605855
  • qq_16605855
  • 2017年06月25日 11:00
  • 295

mysql使用rand随机查询记录的高效率方法

一直以为mysql随机查询几条数据,就用    SELECT * FROM `table` ORDER BY RAND() LIMIT 5      就可以了。    但是真正测试一下才发现这...
  • zqtsx
  • zqtsx
  • 2013年10月14日 18:18
  • 1568

随机选择数据库记录的方法

http://blog.csdn.net/l_serein/article/details/4446498 (使用Randomize函数,通过SQL语句实现)   对存储在数据库中的数据来说,...
  • mituan1234567
  • mituan1234567
  • 2014年03月04日 15:21
  • 341
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:四种数据库,取随机记录的方法
举报原因:
原因补充:

(最多只允许输入30个字)