当前位置: 首页 > 建站技术 > 数据库 > MySQL > 正文

  • 标签
  • 源码
  • 特效
  • MySQL实现表中取出随机数据


    导读:MySQL是开放源代码,MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容好的选择。 那么如何在MySQL实现中取出随机数据呢?

    SELECT * FROM table_name ORDER BY rand() LIMIT 5;

    rand在手册里是这么说的:

    RAND()

    RAND(N)

    返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。

    mysql> select RAND();

    -> 0.5925

    mysql> select RAND(20);

    -> 0.1811

    mysql> select RAND(20);

    -> 0.1811

    mysql> select RAND();

    -> 0.2079

    mysql> select RAND();

    -> 0.7888

    你不能在一个ORDER BY子句用RAND()值使用列,因为ORDER BY将重复计算列多次。然而在MySQL3.23中,你可以做: SELECT * FROM table_name ORDER BY RAND(),这是有利于得到一个来自SELECT * FROM table1,table2 WHERE a=b AND c

    但我试了一下,8千条记录的表,执行一次需要0.08 sec,.慢了些

    后来请教了google,得到如下代码

    SELECT *

    FROM table_name AS r1 JOIN

    (SELECT ROUND(RAND() *

    (SELECT MAX(id)

    FROM table_name)) AS id)

    AS r2

    WHERE r1.id >= r2.id

    ORDER BY r1.id ASC

    LIMIT 5;

    执行效率需要0.02 sec.可惜的是,只有mysql 4.1.*以上才支持这样的子查询.

    通过上文中的方法就能够完成在MySQL实现表中取出随机数据,希望大家都能够掌握这种技巧,这样在以后的工作中遇到类似问题就能够轻松解决。

    关注创业、电商、站长,扫描方便乐网站微信二维码,定期抽大奖。

    【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至2723741405@qq.com,我们将及时沟通与处理。本站内容除非来源注明方便乐,否则均为网友转载,涉及言论、版权与本站无关。

    本文永久链接:http://www.fangbianle.com/news/show-3794.html

  • 营销
  • 创业
  • 电商
  • 微商
  • 品牌策略的内涵与方法
    一份完美的网络营销推广方案是这样出炉的
    优秀营销策划:有机会我们就抓住机会,没有机会我们就创造机会
    那些关于抽奖你不知道的事,其实吸粉也得靠套路!
    内容运营:如何借助热点,让你的产品一炮走红
    营销策划的流程
    万商汇:移动营销从粗放走向精细化
    好活动才得人心,可是什么样的活动才是好活动呢?