我有一个mySQL业务记录集,我必须随机排序,以对他们公平,以确保他们都获得相同的曝光率。
我现在的问题是列表太长了,所以我必须对结果进行分页。我不能以随机化记录的方式使用限制限制%d,%d,因为它会重新随机化记录,有时会出现相同的业务。
我需要的是以随机顺序获取记录,然后对它们进行分页。有没有办法做到这一点?
谢谢。
SELECT *
FROM business
ORDER BY RAND( )
LIMIT 0 , 30
我知道RAND( )不是随机化记录的最有效方法。我将在之后更改此设置。
这是在我的网站上排序搜索结果的一个问题,
进行搜索时,内容页上会出现随机结果,此页面也包含分页。用户跟随我的SQL查询。
SELECT * FROM table ORDER BY RAND() LIMIT 0,10;
所以我的问题是
我需要确保每次用户访问下一页时,他们已经看到的结果不再出现(在下一个查询中排除它们,以内存高效的方式,但仍然按rand()排序)。
每次访问第一页时,都会有不同的结果集,是否可以使用分页,或者排序总是随机的。
我可以在MYSQL中使用种子,但是我不知道如何实际使用它。
site 我正在从事一个项目(CodeIgniter - PHP MySQL),该项目从Ad_API中获取数据并在我的站点中显示这些列表。API使用负载的数据(~1kb)来讨论每个实体的JSON。我每页显示大约20-30个这样的实体,所以这就是我请求服务器的内容(大约20‘s的数据)。服务器以随机方式提供数据,并且可以通过提供任何标识符来请求单个实体的而不是。
Problem I,现在必须用分页显示更多的结果(200+)。如果是MySQL db,我是在查询黄油,但在这里我做不到。
我的论点--解决方案
jQuery分页:是的,这是一个选项,但同样,我必须同时在用户浏览器上加载所有200个
我在一个基本的分页列表中工作,我需要随机检索所有的结果
这就是为什么我使用
SELECT *
FROM table
WHERE 1
ORDER BY rand()
它工作得很好,直到我需要对它进行分页...
SELECT *
FROM table
WHERE 1
ORDER BY rand()
LIMIT $offset, $recordsperPage
如何以随机顺序检索整个列表,但在分页时,每个页面都不会重复先前的随机单词?
在mysql中,是否可以使用预定义的列值(ID)集(如: order by (ID=1,5,4,3) )按"order by“进行排序,这样我就可以按该顺序得到记录1、5、4、3?
更新:关于滥用mysql的 ;-)我必须解释为什么我需要这个...
我希望我的记录每5分钟随机改变一次排序。我有一个cron任务来执行更新表,以将不同的随机排序顺序放入其中。只有一个问题!分页。我会有一个访问者来我的页面,我给他前20个结果。他将等待6分钟,然后转到第2页,他将得到错误的结果,因为排序顺序已经改变。
所以我想,如果他来我的网站,我会把所有的ID放到一个会话中,当他在第2页时,他会得到正确的记
我有一个API,它从DB返回圆顶分页行。但是,当我按RANDOM()订购行时,就会在连续的页面上得到重复的数据。是否有任何选项可以设置每个查询的随机种子?
如果没有,是否可以全局设置随机种子以强制RANDOM()生成每个查询的相同值?然后我就可以每3分钟改变一次全局随机或者类似的.
您可以使用以下代码:
SELECT * FROM "table" ORDER BY RANDOM() OFFSET 5 LIMIT 5
现在,我希望将种子传递给这个查询,这样就可以对随机结果进行分页。我应该这样做吗?
SELECT "table".*, SETSEED(0.1) F
我有一个包含id、type、question、option1 .. 4和answer字段的问题表。有三种类型的问题A、B和C。
我必须为A和B类型各随机抽取7个问题,为C类型随机抽取6个问题。每个测试共显示20个问题。
我必须一次只显示一个问题,然后单击下一步按钮。因此,我对此使用了分页。所以我不得不在mysql查询的末尾加上$limit,$start。我如何才能为此编写一个查询。
我写了两个查询,如下:
1:
(select * from dgm_questions Where ques_type IN('A') Order by rand() ASC Limit 7) un
我已经在我的网页上高级搜索,现在如何工作如下所示。当进行搜索时,随机结果会出现在内容页面上,现在这个页面还包括分页,所以我的问题是每次访问者转到第一个页面时都会出现不同的结果。是否可以对此使用分页,或者排序将始终是随机的。
我正在使用a查询,比如
SELECT * FROM table ORDER BY RAND() LIMIT 0,20;
假设我有一张有一堆记录的表,我想将这些记录随机呈现给用户。我还希望用户能够来回分页,所以我必须坚持某种顺序,至少在一段时间内是这样。
这个应用程序基本上只有AJAX,它对已经访问过的页面使用缓存,所以即使我总是提供随机结果,当用户试图返回时,他将得到前一个页面,因为它将从本地缓存加载。
问题是,如果我只返回随机结果,可能会有一些重复的结果。每个页面包含6个结果,因此为了防止这种情况,我必须执行类似WHERE id NOT IN (1,2,3,4 ...)的操作,将以前加载的所有I放在其中。
该解决方案的巨大缺点是无法在服务器端缓存任何内容,因为每个用户都会请求不同的数据。
另一种解决方案可能是