一尘不染

Seeding SQLite RANDOM()

sql

SQLite是否支持 RANDOM()
以与MySQL相同的方式Seeding函数
RAND()

$query = "SELECT * FROM table ORDER BY RAND(" . date('Ymd') . ") LIMIT 1;";

从MySQL手册中了解RAND(N)

如果指定了常量整数参数N,它将用作种子值,这将产生可重复的列值序列。在下面的示例中,请注意RAND(3)生成的值的序列在出现它的两个地方都是相同的。

如果不是,是否有任何方法可以仅使用一个查询来归档相同的效果?


阅读 142

收藏
2021-03-10

共1个答案

一尘不染

如果您需要伪随机顺序,则可以执行以下操作(PHP):

$seed = md5(mt_rand());
$prng = ('0.' . str_replace(array('0', 'a', 'b', 'c', 'd', 'e', 'f'), array('7', '3', '1', '5', '9', '8', '4'), $seed )) * 1;
$query = 'SELECT id, name FROM table ORDER BY (substr(id * ' . $prng . ', length(id) + 2)';

另外,您可以将$ seed设置为预定义值,并始终获得相同的结果。

我已经从我的同事http://steamcooker.blogspot.com/中学到了这个技巧

2021-03-10