Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL-按上下文随机排序_Php_Mysql_Random_Sql Order By - Fatal编程技术网

Php MySQL-按上下文随机排序

Php MySQL-按上下文随机排序,php,mysql,random,sql-order-by,Php,Mysql,Random,Sql Order By,我有一个sql查询,它从一个表中获取所有文章。此列表按类别、价格和延迟排序 有些商品价格相同,种类相同,延迟时间相同,所以它们总是以相同的顺序出现。我的问题是:如果一篇文章具有相同的特征,为什么它们总是排在另一篇之前?我需要按照保存在cookie中的一个随机元素对它们进行洗牌,这样我就可以对给定的用户进行相同的洗牌 例 我有100篇文章,其中5篇与我们称之为art1、art2、art3、art4和art5的规格相同 订购后,我得到了以下列表: art1 art2 art3 art4 art5

我有一个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每天过期的当天晚些时候回来,我就可以为他获得完全相同的订单


我知道一些网站使用上下文变量进行洗牌,但如何进行洗牌?

您可以使用order BY category、price、delay、RANDseed添加另一个订单字段,并将cookie中的数据作为种子添加到random函数中

然后,只要种子不改变,您将始终为您的用户获得相同的数字序列


参见

有很多文章讨论如何在MySQL中随机挑选记录

使用ORDER BY RAND非常慢。如果改用PHP代码,效果会更好

获得记录后,将ID保存到cookie/session中,以便以后恢复