例如,假设您希望每10分钟得到一个随机结果。有没有一种方法可以实现这一点 ORDER BY RAND() ?
ORDER BY RAND()
$fetch = mysqli_query($conn, " SELECT * FROM food JOIN food_images ON food.size = food_images.size ORDER BY RAND() ");
我也在使用 JOIN 担心这会不会影响答案。谢谢您!
JOIN
qlfbtfca1#
我面前没有mysql服务器,所以大部分都是猜测,但您可以尝试以下方法:通过将系统时间(以秒为单位)除以10分钟内的秒数,然后转换为整数,可以生成每10分钟仅更改一次的数字:
$seed = (int) (time() / 600);
然后将这个值传递给mysql的 RAND() 作为一个参数来为rng种子,你应该得到一个可重复的序列,每十分钟改变一次:
RAND()
$stmt = mysqli_prepare($conn, 'SELECT ... ORDER BY RAND(?)'); mysqli_stmt_bind_param($stmt, 'i', $seed);
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分钟才改变一次。
a6b3iqyw3#
您可以使用mysql事件调度器,如文档中所述:您正在创建一个包含一个或多个sql语句的命名数据库对象,这些sql语句将以一个或多个固定的间隔执行,以特定的日期和时间开始和结束我猜您使用的是php,因此也可以使用php cron作业,用php管理cron作业
3条答案
按热度按时间qlfbtfca1#
我面前没有mysql服务器,所以大部分都是猜测,但您可以尝试以下方法:
通过将系统时间(以秒为单位)除以10分钟内的秒数,然后转换为整数,可以生成每10分钟仅更改一次的数字:
然后将这个值传递给mysql的
RAND()
作为一个参数来为rng种子,你应该得到一个可重复的序列,每十分钟改变一次:yks3o0rb2#
你可以这样做:
的参数
RAND()
功能是种子。其中的表达式,每10分钟才改变一次。a6b3iqyw3#
您可以使用mysql事件调度器,如文档中所述:
您正在创建一个包含一个或多个sql语句的命名数据库对象,这些sql语句将以一个或多个固定的间隔执行,以特定的日期和时间开始和结束
我猜您使用的是php,因此也可以使用php cron作业,用php管理cron作业