MySQL取出随机数据
作者:mdxy-dxy 发布时间:2024-01-19 22:12:02
他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.
翻了手册,找到了下面这个语句,可以完成任务了,但效率较低
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<d ORDER BY RAND() LIMIT 1000的集合的随机样本。注意在一个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.*以上才支持这样的子查询.
下面是其它网友的补充:
select id from zhyx_items order by rand() 这样效率太低了
优化sql语句之后:
SELECT t1.id
FROM zhyx_items AS t1 JOIN
(SELECT ROUND(RAND() *
((SELECT MAX(id) FROM zhyx_items)-(SELECT MIN(id) FROM zhyx_items))+
(SELECT MIN(id) FROM zhyx_items)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 0,5;
猜你喜欢
- 虽然Python被说成是一种解释型语言,但是实际上,Python源程序要先经过编译,然后才能运行。与Java语言类似,Python源程序编译
- 本文主要研究的是用Python语言建立Map写Excel表的相关代码,具体如下。前言:我们已经能够很熟练的写Excel表相关的脚本了。大致的
- 这篇文章主要介绍了Python sqlite3查询操作过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 一、前提条件安装了Fiddler了(用于抓包分析)谷歌或火狐浏览器如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,
- Python break 语句Python break语句,就像在C语言中,打破了最小封闭for或while循环。break语句用来终止循环
- 利用这个小游戏可以学习一下ython3.3中tkinter的使用方法# -*- coding: utf-8 -*-import tkinte
- 站长们是不是还在为空间不支持域名绑定到子目录而发愁呢?买了个便宜也不错的空间,用的还满意,准备再开几个网站,却发现空间程序太落后,无法支持域
- 本文列出了一些asp编程种可能会用到的正则表达式例子,大家可以方便的调用!如果您对asp种的正则表达式不是很了解可以看看这篇文章《ASP中R
- 目录Java的数据库连接(JDBC)1、什么是JDBC2、JDBC的原理3、演示JDBC的使用4、数据库连接方式5、JDBC的查询6、SQL
- Django中上传文件方式。如何实现文件上传功能?1创建项目uploadfile:创建app:front项目设置INSTALLED_APPS
- 随着WEB标准在国内的不断普及,结构表现行为分离、模块化、语义化、优雅退化等概念也成为考核一名前端人员对WEB标准理解的重要条目,其中,由于
- 一般情况下,网站的图片代码是这样的。<img src="./images/test.jpg"
- Python中的布尔类型Python中的布尔类型(bool)只有两个取值,分别是True和False。bool类型通常用于逻辑判断和条件控制
- 本文实例为大家分享了python自动发送邮件的具体代码,供大家参考,具体内容如下#coding=utf8 ''&
- 楔子当有多个 IO 密集型的任务要被处理时,我们自然而然会想到多线程。但如果任务非常多,我们不可能每一个任务都启动一个线程去处理,这个时候最
- easy_install 卸载通过easy_install 安装的模块可以直接通过 easy_install -m Packag
- 本文实例讲述了Python Web框架之Django框架Model基础。分享给大家供大家参考,具体如下:model是关于你的数据的单一的,确
- /* 小弟刚刚接触ORACLE存储过程,有一个问题向各位同行求教,小弟写了一个存储过程,其目的是接收一个参数作为表名,然后查询该表中的全部记
- 内容摘要:除了内部性能增强和优化外,IIS6.0版本的 Active Server Pages(ASP)&nb
- 一、map函数作用:map主要作用是计算一个序列或者多个序列进行函数映射之后的值语法:map(function,iterable1,iter