以前碰见这种使用场景都是直接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,闲来无聊,我也写一个,但是写的没有老师好,哈哈,好了说一下思路,先把界面布置好,然后逐一实现每个按钮的功能,其实也没什么难的。