`
liangjian103
  • 浏览: 177521 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL如何从表中取出随机数据

阅读更多

原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.最近我从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的集合的随机样本。注意在一个WHERE子句里的一个RAND()将在每次WHERE被执行时重新评估。

但我试了一下,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数据库表中取出随机数据的代码

    MySQL 如何从表中取出随机数据  以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩. 他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询. 翻了手册,找到了下面这个语句,可以完成任务了 ...

    PHP实现在数据库百万条数据中随机获取20条记录的方法

    本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法。分享给大家供大家参考,具体如下: 额,为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是...

    MySQL取出随机数据

    在MySQL中,获取数据库表中的随机数据是一项常见的需求,特别是在...总之,从MySQL中高效地取出随机数据需要权衡性能、兼容性和实现的复杂性。在实际应用中,应根据数据量、系统资源以及特定需求来选择最适合的方法。

    MySql分组后随机获取每组一条数据的操作

    在MySQL数据库中,有时我们需要对数据进行分组处理,并从每个分组中随机选取一条记录。这在统计分析或者抽样调查等场景中非常常见。本文将详细介绍如何在MySQL中实现这一操作,以及一些关于随机选取数据的优化方法。...

    MySQL 随机查询数据与随机更新数据实现代码

    MySQL随机查询数据 以前在群里讨论过这个问题,比较的有意思.MySQLl的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了。 代码如下: SELECT * ...

    Flex 以Tomcat为服务器 通过RemoteObject 连接MySQL 随机取出单词的拼单词游戏

    通过Tomcat,开发者可以搭建一个可靠的平台来处理游戏的数据存储和逻辑处理,如随机抽取并返回MySQL数据库中的单词。 MySQL是一个广泛使用的开源关系型数据库管理系统,它在本项目中用于存储和管理单词数据。开发者...

    如何从数据库中随机取出10条记录的方法

    - **数据分析:** 在进行大数据分析时,为了快速了解数据分布情况,可以从大量数据中随机抽取一部分样本。 - **系统测试:** 开发过程中,需要对系统进行压力测试或功能测试,此时可以从数据库中随机抽取数据进行...

    php随机取mysql记录方法小结

    在PHP与MySQL交互时,有时候我们需要从数据库中随机获取数据,比如用于展示推荐内容、轮播图或者其他随机展示的信息。本文将介绍几种PHP随机获取MySQL记录的方法。 **方法一:Order By Rand()** 这是最常见的一种...

    数据库+Mysql+性能调用+用于在实践过程中进行Mysql的性能调优

    如果需要随机选择数据,可考虑使用其他方法,如先抽取出ID列表再进行随机选取。 7. **选择合适的数据类型**:选择最小的数据类型来存储数据,减少存储空间,提高性能。例如,使用TINYINT代替INT,使用VARCHAR代替...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...

    基于springboot+redis+mysql实现抢红包功能项目-源码

    - **队列处理**:Redis的List数据结构可以作为待抢红包的队列,新红包被推入队列,用户随机从队列中取出。 3. **MySQL**: MySQL是一个关系型数据库管理系统,用于持久化存储红包的生成、发放和领取记录。在项目...

    My SQL group by取同组第一条

    在MySQL中,`GROUP BY` 语句用于对数据进行分组,通常与聚合函数(如 COUNT(), SUM(), AVG() 等)一起使用,以便对每个分组进行计算。然而,有时候我们可能需要在每个分组中选取特定的一条记录,例如分组内最早或最...

    如何进行大数据分析及处理?1.pdf

    这些算法用于从数据中自动发现知识,如预测未来趋势、找出相似群体、揭示隐藏模式等。 3. 预测性分析:预测分析利用历史数据建立预测模型,以预测未来的事件或行为。这在市场预测、销售预测、风险评估等领域有着...

    Mysql覆盖索引详解

    例如,如果一个查询只需要从索引中获取数据,而无需访问原始数据行,那么该索引就实现了覆盖。然而,并非所有类型的索引都支持覆盖,比如哈希索引和全文索引,因为它们不存储列的值。MySQL主要依赖B-TREE索引来实现...

    mysql中关于覆盖索引的知识点总结

    覆盖索引是MySQL数据库优化中的一个重要概念,它指的是在一个查询中,如果索引包含了SQL语句需要的所有数据,那么MySQL可以直接从索引中获取信息,而无需回表查询原始数据行。这种技术对于提高查询效率有着显著的...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例137 从数组中随机取出元素 165 实例138 合并数组 166 实例139 拆分数组 167 实例140 遍历数组 168 2.11 日期和时间 169 实例141 设置系统的当前时间 169 实例142 将日期和时间转换为时间戳 170 实例143 获取系统...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例137 从数组中随机取出元素 165 实例138 合并数组 166 实例139 拆分数组 167 实例140 遍历数组 168 2.11 日期和时间 169 实例141 设置系统的当前时间 169 实例142 将日期和时间转换为时间戳 170 实例143 获取系统...

Global site tag (gtag.js) - Google Analytics