据我所知,这就是你在MySQL中选择随机排序的行的方法:
SELECT * FROM test ORDER BY RAND() ASC;
现在这将返回一组随机排列的行。
但是如果我想两次抓住相同的随机集呢?我不能再次使用RAND()
,因为每次都会改变。{/ p>
我尝试输入RAND()
生成的实际十进制数字,但这似乎也不起作用。
任何帮助?
答案 0 :(得分:2)
您可以使用相同的种子:
SET @seed = some_int_value; -- I did use the julian day count for a daily changing result.
SELECT * FROM test ORDER BY RAND(@seed) ASC;
请参阅RAND
兰德(),兰德(N)
返回0< = v<范围内的随机浮点值v。 1.0。如果 指定了一个常量整数参数N,它用作种子 value,它产生可重复的列值序列。在里面 下面的例子,RAND(3)产生的值序列是 在它们出现的两个地方都是一样的。
答案 1 :(得分:1)
对于许多语言的通用解决方案来说,这实际上是一个非常常见的问题。大多数随机数生成器允许您在构造时传递种子值,每次生成随机数时,具有相同种子的RNG返回相同的结果模式。
大多数RNG使用系统时间的某些功能作为默认种子(没有通过种子),每次都提供一组新的数字。
您可以将RAND()
与种子RAND(N)
一起使用,如果基础表保持不变,这将返回相同的行集。如果添加了另一行,例如,另一行将为该行生成数字,它可能会在结果集中的任何位置结束。