Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 - Fatal编程技术网

Php 如何对查询结果进行随机排序&;选择随机行。(MySQL)

Php 如何对查询结果进行随机排序&;选择随机行。(MySQL),php,mysql,random,Php,Mysql,Random,请注意,我是这方面的初学者 我有两个问题: 1) 如何对查询结果进行随机排序 查询示例: $get\u questions=mysql\u query(“从项目银行中选择*,其中项目类型=1或项目类型=3或项目类型=4”) 2) 从表中选择随机行的最佳方法。假设我想从一张表中随机抽取10行 非常感谢, SELECT * FROM item_bank_tb WHERE item_type in(1,3,4) order by rand() limit 10 请注意,order by rand()

请注意,我是这方面的初学者

我有两个问题:

1) 如何对查询结果进行随机排序

查询示例:

$get\u questions=mysql\u query(“从项目银行中选择*,其中项目类型=1或项目类型=3或项目类型=4”)

2) 从表中选择随机行的最佳方法。假设我想从一张表中随机抽取10行

非常感谢,

SELECT * FROM item_bank_tb WHERE item_type in(1,3,4) order by rand() limit 10
请注意,order by rand()在大型记录集上的速度非常慢

编辑。看看这篇非常有趣的文章,它提供了一种不同的方法


如果您不介意牺牲插入/更新/删除操作的复杂性来提高选择的速度,您可以始终添加序列号,并确保序列号在插入/更新/删除时保持不变,那么无论何时进行选择,只要在此范围内选择一个或多个随机数即可。如果“sequence”列被索引,我想这大概是你能得到的最快速度了

另一种选择是“洗牌”。添加序列列,在此列中插入随机值,每当选择记录时,按序列列排序,并将选定的记录序列更新为新的随机值。更新只会影响您检索到的记录,因此不会太昂贵。。。但是,对您的数据集运行一些测试可能是值得的

这可能是一个相当邪恶的事情说,但我会说它无论如何。。。是否需要显示“随机”数据?如果您试图显示随机记录,可能是做错了什么


想想亚马逊。。。他们是展示随机的产品,还是展示受欢迎的产品,以及“其他人看到这些时买的东西”。这会给你一个在右边的随机问题列表,还是一个相关问题的列表?只是一些值得思考的东西。

1)
ord by rand()
但它效率很低2)
限制rand(),1效率更高,但一次只能随机选择一行。Ye,这就是我读到的,希望有人能提出更好的方法。我不知道比Quassnoi更好的解决方案。我有一个题库,我想从题库中随机选择20个问题,因此给每个学生一个独特的测试,你应该考虑使用价值。每次显示问题时,将其“已使用”计数器增加1,并使用“已使用”值最低的20个问题。这将确保问题的均匀分布。。。如果你愿意,你可以在顶部添加一些随机性:)这是一个非常聪明的回答。