mysql随机抽取一定数量的记录实例讲解

作者:沉默的土豆 时间:2024-01-21 07:19:38 

以前碰见这种使用场景都是直接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

标签:mysql,随机抽取
0
投稿

猜你喜欢

  • 9个提高 Python 编程的小技巧

    2022-01-20 16:53:28
  • 数字人整合动网论坛的方法

    2009-05-29 18:23:00
  • MySQL Version确认问题(版本确认)

    2024-01-19 15:20:47
  • python 图像插值 最近邻、双线性、双三次实例

    2023-01-09 07:48:56
  • PyQt5显示GIF图片的方法

    2023-04-04 02:22:29
  • 谈谈CSS样式表的命名规范

    2007-10-08 12:41:00
  • Python整数与Numpy数据溢出问题解决

    2023-02-02 00:39:36
  • 便捷提取python导入包的属性方法

    2022-05-11 05:07:17
  • MySQL性能压力基准测试工具sysbench的使用简介

    2024-01-25 04:58:35
  • Python计算双重差分模型DID及其对应P值使用详解

    2022-08-06 21:07:53
  • Keras自定义实现带masking的meanpooling层方式

    2021-06-23 03:29:47
  • Access中的模糊查询

    2007-11-18 14:57:00
  • Python稀疏矩阵及参数保存代码实现

    2021-05-10 08:18:34
  • Git 教程之服务器搭建详解

    2022-07-28 06:44:20
  • python opencv 图像尺寸变换方法

    2023-09-27 20:33:03
  • JavaScript运动框架 多值运动(四)

    2023-09-08 01:44:51
  • 基于OpenCV实现视频循环播放

    2023-07-13 09:10:33
  • ASP.NET(AJAX+JSON)实现对象调用

    2023-07-19 12:29:33
  • tensorflow多维张量计算实例

    2022-02-05 00:43:48
  • 使用已经得到的keras模型识别自己手写的数字方式

    2021-04-03 17:41:11
  • asp之家 网络编程 m.aspxhome.com