Access随机读取几条记录的方法

一 5th, 2010

在程序设计时,可能经常用到随机读取几条记录的功能,MSSQL有order by NewID()的方法,Access怎么办呢?
经过一翻百度搜索,还真找到了一些解决方案:

网上还有一种说法,有人采用一条SQL语句解决Access随机读取几条记录的问题:select top 50 * from table order by int(rnd()*50),不过这种方法我不敢苟同,也许是我的只是不够渊博,我竟然不能理解。如果int(rnd()*50)应该是一个数了吧,int(rnd()*50),不初始化种子,所以每次返回结果都是一样的,所以相当于没有排序。

还有一种方法,就是先获取总记录数,然后取1~总数之间的随机数,rs.move,不过这种方法有点罗嗦,在此不推荐。

再反回来看第一种方法,如果稍微修改一下,给rnd添加一个种子呢,比如第一条记录rnd(1),第二条记录rnd(2)….。有了,数据库中的id字段(自动编号主键)不正是现成的吗?select top 10 * from news order by rnd(id)。对就是这样简单。

在测试的时候还发现了另一个有趣的事情,如果order by 常量数字,比如select top 10 * from news order by 1 desc则是按第一列结果倒序来排序。

  1. countmeon
    一 6th, 201014:40

    嗯 专注于技术 ,我现在都看不进去了

  2. 棋牌之家
    一 8th, 201015:22

    恩。多点这样的文章才好、!

  3. mqycn
    一 8th, 201022:45

    @countmeon
    呵呵,也是工作需要啊~

  4. mqycn
    一 8th, 201022:46

    @棋牌之家
    呵呵,有空就多写几篇

  5. 蓝雨
    十 23rd, 201021:42

    这样呢?rnd(time()-id)

  6. sowsoy
    十二 14th, 201015:34

    好文,文章被整理到[种豆]-http://www.sowsoy.com/topics/26/2603/62.html,如不同意,请email通知我,谢谢。