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

原创 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数据表中随机取出一条记录

效率极差的一种办法: select * from 表名 order by rand( ) limit 1;  //此处的1就是取出数据的条数 高效写法 SELECT * FROM u...
  • buyueliuying
  • buyueliuying
  • 2017-09-23 16:22:47
  • 885

从数据库中随机提取10条记录

Sql server: select top 10 * from 表 order by newid() Access: SELECT top 10 * FROM 表 ORDER B...
  • bear_79
  • bear_79
  • 2014-01-08 23:44:45
  • 1097

四种数据库随机获取10条数据的方法

四种数据库随机获取10条数据的方法 SQL Server: 复制代码代码如下: SELECT TOP 10 * FROM T_USER ORDER BY NEWID() ...
  • lishimin1012
  • lishimin1012
  • 2015-06-16 11:34:01
  • 4704

mysql优化之数据库随机取一条数据

大家都知道mysql 查询数据库随机取一条数据当然用rand()方法  其实这个方法是超级鸡肋的,当然你爱好也无所谓,首先列举两个表 a表   id(主键 int),cardnumber(身份证号...
  • u010757785
  • u010757785
  • 2017-10-13 10:47:35
  • 541

随机获取数据库表记录行

来源:http://www.bug315.com/article/48.htm   1、随机排序后获取第一行         获取随机记录的常见SQL做法,就是对查询结果进行随机排序...
  • ubuntulinuxjava
  • ubuntulinuxjava
  • 2015-01-20 13:59:57
  • 404

SQLSERVER数据库中随机取记录

从A表随机取10条记录,用SELECT TOP 10 * FROM ywle order by newid() order by 一般是根据某一字段排序,newid()的返回值 是uniqueid...
  • tangbow
  • tangbow
  • 2012-07-25 14:39:28
  • 11474

四种,取随机记录的方法

  • zgqtxwd
  • zgqtxwd
  • 2008-04-26 16:58:00
  • 136

asp随机读取数据库记录

(1)   set rs=server.CreateObject("adodb.recordset")  rs.open "select * from news",conn,1,1   if not ...
  • wslyy99
  • wslyy99
  • 2007-07-13 15:35:00
  • 1505

MySql从表结果集中随机取一条数据

该功能的实现基于“mysql 查找结果中自动加序号列 ” 博客文章地址:http://blog.csdn.net/macwhirr123/article/details/7489484 Selec...
  • testcs_dn
  • testcs_dn
  • 2013-08-21 15:36:38
  • 7197

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:07
  • 17239
收藏助手
不良信息举报
您举报文章:四种数据库,取随机记录的方法
举报原因:
原因补充:

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