例如,假设你想要每10分钟随机得到一个结果。有没有一种使用ORDER BY RAND()
实现这一点的方法
$fetch = mysqli_query($conn, "
SELECT *
FROM food
JOIN food_images ON food.size = food_images.size
ORDER BY RAND()
");
我也在使用JOIN
,担心这会不会影响答案。谢谢!
发布于 2018-08-16 05:08:13
我前面没有MySQL服务器,所以这大部分都是猜测,但您可以尝试如下所示:
您可以生成一个每十分钟只更改一次的数字,方法是将系统时间(以秒为单位)除以十分钟内的秒数,然后转换为整数:
$seed = (int) (time() / 600);
然后将这个值作为参数传递给MySQL的RAND()
函数,作为RNG的种子,您应该会得到一个每十分钟更改一次的可重复序列:
$stmt = mysqli_prepare($conn, 'SELECT ... ORDER BY RAND(?)');
mysqli_stmt_bind_param($stmt, 'i', $seed);
发布于 2018-08-16 05:03:51
你可以这样做:
SELECT *, rand(time_to_sec(current_time()) / 600) as ord
FROM food
JOIN food_images ON food.size = food_images.size
order by ord
RAND()
函数的参数是种子。其中的表达式每10分钟才会更改一次。
https://stackoverflow.com/questions/51866180
复制相似问题