有个文章段落表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;

优点:速度是挺快的

缺点:产生是连续的随机记录

参考:

123

Mysql带条件取多条随机记录的更多相关文章

  1. MySQL中分组取第一条, 以及删除多余的重复记录

    检查重复记录 -- 检查重复code1 select count(identity) num, identity from event_log where code='code1' order by ...

  2. asp获取access数据库中的一条随机记录

    针对“用一条SQL得到数据库中的随机记录集”问题在网上已经有很多答案了: SQL Server 2000: SELECT TOP n * FROM tanblename ORDER BY NEWID( ...

  3. mysql带条件的计数

    在网站开发的过程中,经常会用到数据统计功能,因此条件计数查询便是不可避免的,下面介绍几种方法来解决此问题. 例(假设): mysql> select * from count_demo; +-- ...

  4. mysql 带条件的sum/count 使用技巧

    本测试只是简单测试,其用途不在于代替count函数配合where函数进行聚合计算,而是在复杂查询中在sum/count中加入条件,一次性求出不同条件下的聚合结果. 1.插入测试数据如图 2.sum计算 ...

  5. mysql group by 取第一条

    select * from table where id in (select max(id) from table group by sku) 说明:id是自增序列,sku是表中的一个字段

  6. mysq带条件的分页查询数据结果错误

    记一次mysql分页条件查询的结果出错: 以一张用户表为例,首先我们看表中的所有数据,注意红色框住的部分: 我们使用不带条件的分页查询来查询,数据显示是OK的: SELECT id,login_nam ...

  7. mysql随机查询符合条件的几条记录

    随机查询,方法可以有很多种.比如,查询出所有记录,然后随机从列表中取n条记录.使用程序便可实现.可是程序实现必须查询出所有符合条件的记录(至少是所有符合条件的记录id),然后再随机取出n个id,查询数 ...

  8. 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

    从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...

  9. 随机获取Mysql数据表的一条或多条记录

    随机获得Mysql数据表的一条或多条记录有很多方法,下面我就以users(userId,userName,password......)表(有一百多万条记录)为例,对比讲解下几个方法效率问题: sel ...

  10. Mysql 多表数据拼接插入及子查询结果集随机取一条

    最近遇到一个测试数据的需求,需要往一个表中插入4个来源的数据. 往orders 表中插入 来自 sql_person cm_user_car_model cm_sp_product_new 部分固定数 ...

随机推荐

  1. 记录--JS 的垃圾回收机制

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 垃圾回收(Garbage Collection)是一种内存管理机制,用于检测和清理不再被程序使用的内存,这些不再被使用的内存就被称为 ...

  2. 《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南 - 第5章

    本章勘误: 暂无,等待细心的你告诉我哦. 本章注解: 出处:207页 原文: 在我们的应用程序中,是不太可能出现LargeHeapHandleTable的问题的.一般来说,可能出现问题会是在需要(动态 ...

  3. [HTML、CSS]知识点

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/130176402 出自[进步* ...

  4. docker部署Prometheus

    1.安装运行Prometheus 下面介绍如何使用Prometheus.Grafana.CAdvisor.node-exporter.mysqld-exporter对本机服务器性能.Docker容器. ...

  5. AXI4的主从机的收发机制

    AXI4的收发机制 1.AXI4的译码器 对于多个主机和从机的AXI4总线的互联架构,译码器都是重要的.主机的端口一般有三个译码器,分别是读地址通道.写地址通道和写数据通道的译码器.主要作用是将通道的 ...

  6. Qt将程序最小角化到系统托盘

    #include "test.h" #include "QPushButton" #include <QSystemTrayIcon> Test:: ...

  7. openGauss2.1.0新特性-账本数据库实验

    openGauss2.1.0 新特性-账本数据库实验 账本数据库融合了区块链思想,将用户操作记录至两种历史表中:用户历史表和全局区块表.当用户创建防篡改用户表时,系统将自动为该表添加一个 hash 列 ...

  8. K8S 性能优化 - K8S APIServer 调优

    前言 K8S 性能优化系列文章,本文为第二篇:Kubernetes API Server 性能优化参数最佳实践. 系列文章: <K8S 性能优化 - OS sysctl 调优> 参数一览 ...

  9. 直播预告丨Hello HarmonyOS进阶课程第四课——ArkUI动画开发

    为了帮助初识HarmonyOS的开发者快速入门,我们曾推出Hello HarmonyOS系列课程,从最基础的配置IDE和创建Hello World开始,详细介绍HarmonyOS基础.开发环境搭建.I ...

  10. 第十四篇:JavaScript基础

    一.CSS内容补充之position 10.position:fixed:固定div在页面的一个位置: top:0; right:0; left:0; position:absolute + rela ...