当前位置: 首页 > 编程笔记 >

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

洪飞龙
2023-03-14
本文向大家介绍mysql随机抽取一定数量的记录实例讲解,包括了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可以放在程序里来计算。

这里有个问题是如果取多条 那么一定是连续的,所以如果是不想取连续数据,得循环,不过此语句效率极高,所以循环查询是可以做的。

以上就是全部相关知识点内容,有需要的朋友们可以学习下,感谢大家对小牛知识库的支持。

 类似资料:
  • 问题内容: 对于像这样的简单SQL, 如何将行号添加到它们,以使行号变为1,2和3? 更新: 我以为我可以像上面那样简化我的问题,但是事实却更加复杂。所以这是一个完整的版本-我需要MyTable为每个人提供三个随机选择(来自),选择/行数分别为1、2和3,并且人与选择之间没有逻辑上的联系。 上面的SQL的问题是, 显然,应该添加1、2和3的拾​​取/行数 而且不明显的是,上面的SQL将给每个人相同

  • 本文向大家介绍C++随机数生成实例讲解,包括了C++随机数生成实例讲解的使用技巧和注意事项,需要的朋友参考一下 如果让你用C++来生成0——N-1之间的随机数,你会怎么做?你可能会说,很简单,看: 仔细想一下,这个结果是随机的吗(当然,我们不考虑rand()函数的伪随机性)? 不是的,因为rand()的上限是RAND_MAX,而一般情况下,RAND_MAX并不是N的整数倍,那么如果RAND_MAX

  • 本文向大家介绍php随机取mysql记录方法小结,包括了php随机取mysql记录方法小结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了php随机取mysql记录方法。分享给大家供大家参考。具体分析如下: 在php中要随机取mysql记录我们可以直接使用mysql_query来执行mysql中的select rand函数获取的数据并读出来,这里就来给大家简单介绍一下. 方法一,代码如下:

  • 我试图显示一个随机记录从我的表,但没有运气,这是我一直以来。这是用PHP编写的 想知道这是否是一个明显的错误吗?我已经连接到数据库了。 JB的

  • 本文向大家介绍java list随机抽取元素的案例,包括了java list随机抽取元素的案例的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧~ 扩展: 截取list list.subList(0, 2); 补充知识:java list随机打乱顺序 通过 Collections.shuffle(list)来打乱顺序 以上这篇java list随机抽取元素的案例就是小

  • 本文向大家介绍java编写一个花名随机抽取器的实现示例,包括了java编写一个花名随机抽取器的实现示例的使用技巧和注意事项,需要的朋友参考一下 一.程序效果 还记得以前上课的时候,老师会用自己写的一个抽取器抽取同学回答问题,当时想着我也要做一个,假期没事干,自学了java,闲来无聊,我也写一个,但是写的没有老师好,哈哈,好了说一下思路,先把界面布置好,然后逐一实现每个按钮的功能,其实也没什么难的。