mysql随机抽取一定数量的记录实例讲解
作者:沉默的土豆 发布时间:2024-01-21 07:19:38
标签:mysql,随机抽取
以前碰见这种使用场景都是直接order by rand()来处理的,但是效率实在是不敢恭维,所以最近又碰见这种场景,在网上找寻下比较好的解决办法.
1.order by rand()
写法:
SELECT
id
FROM
`table`
ORDER BY
rand()
这种写法的缺点是rand函数在order by中被执行多次,影响效率。
2.max(id) * rand() 使用join
写法:
SELECT
*
FROM
`table` AS t1
JOIN (
SELECT
ROUND(
RAND() * (
(SELECT MAX(id) FROM `table`) - (SELECT MIN(id) FROM `table`)
) + (SELECT MIN(id) FROM `table`)
) AS id
) AS t2
WHERE
t1.id >= t2.id
ORDER BY
t1.id
LIMIT 1;
网上的大佬们都推荐第二种写法,特此记录下,感觉最大id和最小id可以放在程序里来计算。
这里有个问题是如果取多条 那么一定是连续的,所以如果是不想取连续数据,得循环,不过此语句效率极高,所以循环查询是可以做的。
来源:https://www.cnblogs.com/tudou1223/p/11473988.html
0
投稿
猜你喜欢
- 本文实例讲述了Python使用dict.fromkeys()快速生成一个字典。分享给大家供大家参考,具体如下:>>> re
- 1、说明创建堆有两种基本方法:heappush() 和 heapify()。当使用heappush()时,当新元素添加时,堆得顺序被保持了。
- Python数据类型分为值类型和引用类型, 下面我们看下它们的区别:值类型:对象本身不允许修改,数值的修改实际上是让变量指向了一个新的对象包
- 环境准备python3.5.4windows redispip install celerypip install rediswindows
- 学习器在测试集上的误差我们通常称作“泛化误差”。要想得到“泛化误差”首先得将数据集划分为训练集和测试集。那么怎么划分呢?常用的方法有两种,k
- 安装 Tesseract OCRTesseract OCR 是一款由 Google 团队开发的开源 OCR(Optical Characte
- 安装完 anaconda运行如下代码执行不了import numpy as npimport os,sys#获取当前文件夹,并根据文件名de
- (1)饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一。在python中
- 示意图:html:{# 用户管理 #} <div id="userManageDiv" style=&
- 起步要介绍一个非常方便的 Django 扩展包-- django-hosts 。它能够提供在不同的子域名下访问不同的 app。例如,在项目中
- 任何一位数据库程序员都会有这样的体会:高通信量的数据库驱动程序中,一条糟糕的SQL查询语句可对整个应用程序的运行产生严重的影响,其不仅消耗掉
- 本文实例为大家分享了python3 pygame接小球游戏的具体代码,供大家参考,具体内容如下操作方法:鼠标操作截图:直接放代码:# -*-
- git 报错信息:OpenSSL SSL_read: Connection was reset, errno 10054Git 中 push
- PyMongo是什么PyMongo是驱动程序,使python程序能够使用Mongodb数据库,使用python编写而成.安装环境
- 1、先导入HTMLTestRunner模块见生成HTMLTestRunner模块2、实例如下(1)单用例文件执行且生成报告import un
- 第一题: give you two var a and b, print the value of a+b, just do it!根据提议
- Python字符编码目前计算机内存的字符编码都是Unicode,目前国内的windows操作系统采用的是gbk。python2默认的字符编码
- 什么是Densenet据说Densenet比Resnet还要厉害,我决定好好学一下。ResNet模型的出现使得深度学习神经网络可以变得更深,
- 过滤html代码的函数,当然也可以使用正则表达式。<%Function FilterHTML(strToFilter)&nb
- //获得视频文件的缩略图function getVideoCover($file,$time,$name) { &nb