我有一张产品表。我使用rand()函数列出了具有分页的项目。当使用rand()时,它以随机顺序显示项目,但是当我们从1页面转到另一页面时,记录会重复。 是否可以使用rand()在每个页面中获取非重复项?如果是,如果没有可能是什么选项。
答案 0 :(得分:3)
好吧,您可以在执行第一个查询时(在您的应用代码中)生成随机种子,然后在请求之间保留该种子 - 并将此种子提供给rand([seed])
函数。应该这样做......
当然,细节取决于你的sql代码目前是如何工作的;你可能需要循环以便忽略随机数的第一页(左右)。
答案 1 :(得分:0)
在这样的情况下,我可能会看到是否有办法创建产品ID列表(我假设每个产品都有某种独特的ID)并将其洗牌。该列表可以存储为临时数据库表,也可以作为会话变量存储在Web应用程序中,例如......这样您就可以访问随机排序列表的任何部分而无需重新计算整个事物从一开始。
如果您在任何特定时间访问该网站的人数很少,这显然是最好的,但您希望每个人都能浏览几页结果。
答案 2 :(得分:0)
SELECT列FROM表 兰德令() 限制1