Mysql带条件取多条随机记录
有个文章段落表part,有两种类型的段落,即part_type取1或2,要从表中随机取多条任意类型的段落,比如3条。
方法一 ORDER BY后接RAND()
select * from part where part_type = 2 order by rand() LIMIT 3;
改方法中在ORDER BY后使用RAND(),来取随机的记录。
优点:随机的效果比较的好,数据量少时相差不大.
我表里大概5000条数据,测试了下与别的方法相差0.04秒左右,所以我最后还是改用了这个
缺点:数据量多时效率低,在ORDER BY从句后使用RAND()函数会导致数据列被多次扫描。
方法二 max(id) * rand()
SELECT *
FROM `part`
WHERE aid >= (
SELECT floor(RAND() * ((
SELECT MAX(aid)
FROM `part`
) - (
SELECT MIN(aid)
FROM `part`
)) + (
SELECT MIN(aid)
FROM `part`
))
)
AND part_type = #{type}
ORDER BY aid
LIMIT #{count};
优点:效率较高,耗时0.01左右
缺点:随机的效果感觉不是很理想
方法三
SELECT *
FROM 'part' AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM 'table')) AS id) AS t2
WHERE t1.id >= t2.id AND part_type = #{type}
ORDER BY t1.id ASC LIMIT 5;
优点:速度是挺快的
缺点:产生是连续的随机记录
Mysql带条件取多条随机记录的更多相关文章
- MySQL中分组取第一条, 以及删除多余的重复记录
检查重复记录 -- 检查重复code1 select count(identity) num, identity from event_log where code='code1' order by ...
- asp获取access数据库中的一条随机记录
针对“用一条SQL得到数据库中的随机记录集”问题在网上已经有很多答案了: SQL Server 2000: SELECT TOP n * FROM tanblename ORDER BY NEWID( ...
- mysql带条件的计数
在网站开发的过程中,经常会用到数据统计功能,因此条件计数查询便是不可避免的,下面介绍几种方法来解决此问题. 例(假设): mysql> select * from count_demo; +-- ...
- mysql 带条件的sum/count 使用技巧
本测试只是简单测试,其用途不在于代替count函数配合where函数进行聚合计算,而是在复杂查询中在sum/count中加入条件,一次性求出不同条件下的聚合结果. 1.插入测试数据如图 2.sum计算 ...
- mysql group by 取第一条
select * from table where id in (select max(id) from table group by sku) 说明:id是自增序列,sku是表中的一个字段
- mysq带条件的分页查询数据结果错误
记一次mysql分页条件查询的结果出错: 以一张用户表为例,首先我们看表中的所有数据,注意红色框住的部分: 我们使用不带条件的分页查询来查询,数据显示是OK的: SELECT id,login_nam ...
- mysql随机查询符合条件的几条记录
随机查询,方法可以有很多种.比如,查询出所有记录,然后随机从列表中取n条记录.使用程序便可实现.可是程序实现必须查询出所有符合条件的记录(至少是所有符合条件的记录id),然后再随机取出n个id,查询数 ...
- 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录
从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...
- 随机获取Mysql数据表的一条或多条记录
随机获得Mysql数据表的一条或多条记录有很多方法,下面我就以users(userId,userName,password......)表(有一百多万条记录)为例,对比讲解下几个方法效率问题: sel ...
- Mysql 多表数据拼接插入及子查询结果集随机取一条
最近遇到一个测试数据的需求,需要往一个表中插入4个来源的数据. 往orders 表中插入 来自 sql_person cm_user_car_model cm_sp_product_new 部分固定数 ...
随机推荐
- SSR解决了什么问题?有做过SSR吗?你是怎么做的?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.是什么 Server-Side Rendering 我们称其为SSR,意为服务端渲染 指由服务侧完成页面的 HTML 结构拼接的页面处 ...
- 记录--使用Vue开发Chrome插件
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 环境搭建 Vue Web-Extension - A Web-Extension preset for VueJS (vue-web-ex ...
- KingbaseES查找慢查询语句和阻塞会话
在处理数据库性能问题时,识别和分析慢查询及阻塞会话是至关重要的步骤.数据库管理员和开发人员常常需要依赖特定的工具和查询语句来追踪这些性能瓶颈. 当数据库响应变慢或出现处理延迟时,第一步通常是查找那些执 ...
- KingbaseES V8R6集群运维案例之---sys_backup.sh init ‘xxxx invalid’故障
KingbaseES V8R6集群运维案例之---sys_backup.sh init 'xxxx invalid'故障 案例说明 在KingbaseES V8R6集群sys_backup.sh在cl ...
- KingbaseES 配置root.sh实现数据库服务开机自启动
案例说明: KingbaseES数据库在部署完成后,支持数据库服务开机自启动,部署完成后,root用户(Linux)执行安装软件目录下的root.sh脚本后,可以实现数据库服务开机自启动. 适用版本: ...
- Minlexes题解
\(\texttt{Problem Link}\) 简要题意 在一个字符串 \(s\) 中,对于每个后缀,任意删掉一些相邻的相同的字符,使得字符串字典序最小. 注意:删掉之后拼起来再出现的相邻相同字符 ...
- 冲刺 NOIP2024 之动态规划专题
专题链接 B - Birds \(3.19\) . 混合背包 \(DP\) . 定义 \(f_{i,j}\) 表示取到鸟巢 \(i\) ,获得 \(j\) 只小鸟时所剩的魔力值. 显然有 \(f_{0 ...
- openGauss/MogDB零字节问题处理
openGauss/MogDB 零字节问题处理 问题描述:java 应用端程序调用 GZIP 压缩类对数据进行编码压缩后入库 ,然后从数据库取出进行解压,原来再 mysql 数据库中是正常的,但迁移到 ...
- 掌握 xUnit 单元测试中的 Mock 与 Stub 实战
引言 上一章节介绍了 TDD 的三大法则,今天我们讲一下在单元测试中模拟对象的使用. Fake Fake - Fake 是一个通用术语,可用于描述 stub或 mock 对象. 它是 stub 还是 ...
- Leetcode-栈的压入弹出序列
/* 输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1] 输出:true 解释:我们可以按以下顺序执行: push(1), push(2), push(3), ...