在一定的时间内随机订购?

dba5bblo  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(389)

例如,假设您希望每10分钟得到一个随机结果。有没有一种方法可以实现这一点 ORDER BY RAND() ?

$fetch = mysqli_query($conn, "
  SELECT * 
    FROM food 
    JOIN food_images ON food.size = food_images.size 
    ORDER BY RAND()
");

我也在使用 JOIN 担心这会不会影响答案。谢谢您!

qlfbtfca

qlfbtfca1#

我面前没有mysql服务器,所以大部分都是猜测,但您可以尝试以下方法:
通过将系统时间(以秒为单位)除以10分钟内的秒数,然后转换为整数,可以生成每10分钟仅更改一次的数字:

$seed = (int) (time() / 600);

然后将这个值传递给mysql的 RAND() 作为一个参数来为rng种子,你应该得到一个可重复的序列,每十分钟改变一次:

$stmt = mysqli_prepare($conn, 'SELECT ... ORDER BY RAND(?)');
mysqli_stmt_bind_param($stmt, 'i', $seed);
yks3o0rb

yks3o0rb2#

你可以这样做:

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分钟才改变一次。

a6b3iqyw

a6b3iqyw3#

您可以使用mysql事件调度器,如文档中所述:
您正在创建一个包含一个或多个sql语句的命名数据库对象,这些sql语句将以一个或多个固定的间隔执行,以特定的日期和时间开始和结束
我猜您使用的是php,因此也可以使用php cron作业,用php管理cron作业

相关问题