首页 新闻 搜索 专区 学院

mysql取表中随机一条记录

0
悬赏园豆:10 [已解决问题] 解决于 2020-09-28 11:35

如题,在mysql中想取表中随机一条记录,思路是取到rownum,然后获取1~总条数的随机数,where条件rownum = 此随机数,可是结果时而为空,时而为多条,求解。

全表数据

随机数

查询结果1

查询结果2

我恰芙蓉王的主页 我恰芙蓉王 | 菜鸟二级 | 园豆:276
提问于:2020-09-21 12:57
< >
分享
最佳答案
0

这是rand函数导致的,如果你用sqlserver,将不会出现此问题,因为整个floor表达式的值会在查询之前就计算好了,而mysql的查询机制仿佛是在查询时,逐行匹配,每扫描一行rand一次,如果floor结果跟rownum匹配就返回,不匹配就返回,导致记录条数不固定

收获园豆:5
E行者 | 小虾三级 |园豆:908 | 2020-09-26 16:14

这样。。。 感谢大佬解答

我恰芙蓉王 | 园豆:276 (菜鸟二级) | 2020-09-28 11:34
其他回答(2)
0
select * from table1   order by rand() LIMIT 1
收获园豆:5
小鸣的微笔记 | 园豆:282 (菜鸟二级) | 2020-09-21 13:48

大佬,能解释下上述现象吗

支持(0) 反对(0) 我恰芙蓉王 | 园豆:276 (菜鸟二级) | 2020-09-21 15:12

@我恰芙蓉王: 随机排序这个思路

支持(0) 反对(0) 小鸣的微笔记 | 园豆:282 (菜鸟二级) | 2020-09-21 16:36

@小鸣的微笔记: 您这个思路我能理解,我只是不明白我提问的那两个查询结果

支持(0) 反对(0) 我恰芙蓉王 | 园豆:276 (菜鸟二级) | 2020-09-21 16:55
0

看你产生的随机数

龚剑 | 园豆:202 (菜鸟二级) | 2020-09-25 10:13

我产生的随机数也只会对应t表的一条rownum啊,不明白为什么会匹配不上或者匹配到多条

支持(0) 反对(0) 我恰芙蓉王 | 园豆:276 (菜鸟二级) | 2020-09-25 18:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册