【发布时间】:2018-08-15 20:46:01
【问题描述】:
例如,假设您希望每 10 分钟获得一次随机结果。有没有办法通过ORDER BY RAND() 实现这一目标?
$fetch = mysqli_query($conn, "
SELECT *
FROM food
JOIN food_images ON food.size = food_images.size
ORDER BY RAND()
");
我也在使用JOIN 并担心这是否会影响答案。谢谢!
【问题讨论】:
-
你的意思是,在接下来的 10 分钟内每次查询都希望得到相同的随机结果,然后在接下来的 10 分钟内希望得到不同的随机结果,以此类推?
-
@AlexHowansky 没错。如果可能的话。
-
如果我没记错的话,
ORDER BY RAND()并不总是像您期望的那样工作,因为 MySQL(可能是某些版本)优化 RAND() 对单个调用的引用,而不是每次调用结果行。您可以改为执行SELECT *, RAND() AS seq .... ORDER BY seq之类的操作,以确保不同的兰特结果。但是,如果总体结果很大,重复这些类型的查询可能会变得很昂贵。您可能需要考虑在启动时选择一个标识值列表,并让执行查询的代码随机选择标识符以进行更有针对性的查询。 -
如果您不希望每次都得到相同的结果,您可以制作额外的表格,将数据放在每个 rand 上,并使用它从所有表格中挑选 rand。
-
@StupidKid 我想要相同的结果 10 分钟,然后在这 10 分钟结束后,制作一个新的结果。