如何实现MySQL表数据随机读取

2016-01-29 15:00 4 1 收藏

如何实现MySQL表数据随机读取,如何实现MySQL表数据随机读取

【 tulaoshi.com - MySQL 】

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/mysql/)

  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中,你可以做:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/mysql/)

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.*以上才支持这样的子查询.

来源:https://www.tulaoshi.com/n/20160129/1494971.html

延伸阅读
标签: excel
如何对Excel工作表中数据随机排序?   1、启动Excel并打开工作表,在数据区域外的H2单元格中输入公式"=RAND()",按Enter键获得计算结果。拖动填充柄 将公式填充到该列的其他单元格中,如图1所示。 图1 创建公式并填充到其他单元格中 2、在开始选项卡的编辑组中单击排序和筛选按钮,在打开的菜单中选择...
那么我们如何从数据库表中检索数据呢?      1、从数据库表中检索信息     实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息。     select语句格式一般为:     SELECT 检索关键词 FROM 被检索的表 WHERE ...
我们都知道当我们建立数据表(innodb或myisam)时,会生成相应的文件(如:MYD,MYI,frm) 在这里,我们探讨下使用frm文件恢复 innodb和myisam类型表的结构,不过由于他们存储引擎的特性,所以恢复的方法也不一样,以下是详细的恢复过程。 myisamchk "xxx.frm" myisamchk 可以试出来,库是不是 myisam 类型 1:恢复innodb类型数据表结构 我们...
kendylan 于 8/30/2001 12:28:41 PM 加贴在 Joy ASP ←返回版面: % strConn="DBQ="+server.mappath("kendylan.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" set objConn=server.createobject("Adodb.connection") objConn.open strConn set rsSchema=objConn.openSchema(20) rsSchema.movefirst Do Until rsSchema.EOF if...
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。下面分别介绍一下这些表的结构和内容: user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。 db权限表:记录各个帐号在各个数据库上...

经验教程

238

收藏

27
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部