我有一个SQL查询,可以从表中获取所有文章。此列表按类别,价格和延迟排序。
有些文章具有相同的价格,相同的类别和相同的延迟,因此它们总是以相同的顺序出现。我的问题是:如果一篇文章具有相同的特征,为什么一篇文章总是会出现在另一篇文章之前?我需要按照保存在cookie中的随机元素对它们进行随机播放,这样我总能为给定用户获得相同的“随机播放”?
例如
我有100篇文章,其中5篇有相同的规格(我们称之为art1,art2,art3,art4和art5)。
按照我的订单,我得到这个清单:
art1
art2
art3
art4
art5
但由于它们具有相同的规格,我需要随机为给定的访问者随机播放它们,例如,一个用户将获得此列表:
art2
art5
art4
art1
art3
以下用户
art4
art3
art1
art5
art2
等...
诀窍是:我需要记住我如何获得每个随机订单,因此如果他在当天晚些时候回来(cookie将每天到期),我可以为给定用户获得完全相同的订单。
我知道有些网站使用上下文变量进行随机播放,但该怎么做?
答案 0 :(得分:0)
您可以使用ORDER BY category, price, delay, RAND(seed)
添加其他订单字段,并将Cookie中的数据作为种子添加到随机函数中。
然后,只要种子没有变化,您将始终为您的用户获得相同的数字序列。
答案 1 :(得分:0)
有很多文章讨论如何在MySQL中随机选择记录。
使用ORDER BY RAND非常慢。如果使用PHP代码则更好。
获取记录后,将ID保存到cookie /会话中,以便稍后恢复