作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在每次插入时将 RAND()
值存储在表中,然后运行以下查询以从表中获取随机行。
select id from test where random_value >= RAND() LIMIT 5;
表中共有 456 行,但随机值仅选取前 20-25 条记录。我在上面的查询中运行了很多次,但从未得到 id > 21
。
您可以在 here 中找到查询和结果。
最佳答案
您的 RAND()
在每次循环后都会发生变化。您需要在 SELECT
之前修复它:
SET @r := RAND();
SELECT id, @r
FROM test
WHERE random_value >= @r
LIMIT 5
但这不是一个好的解决方案,因为在小随机数的情况下,您总是会从数据库中获得相同的行。
为了节省性能,您可以使用 this方法。我试过了,它有效。
关于mysql - 使用 MySQL RAND() 来避免 ORDER BY RAND(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773226/
我是一名优秀的程序员,十分优秀!