带有分页的MySql查询中的随机值

Posted

技术标签:

【中文标题】带有分页的MySql查询中的随机值【英文标题】:Random values in MySql query with pagination 【发布时间】:2011-05-10 16:30:56 【问题描述】:

我的网页上有高级搜索,现在它的工作原理如下。进行搜索时,内容页面上会出现随机结果,现在该页面还包括分页,所以我的问题是每次访问者转到第一个页面时都会出现不同的结果。是否可以使用分页,或者排序总是随机的。

我正在使用类似

的查询
SELECT * FROM table ORDER BY RAND() LIMIT 0,20;

【问题讨论】:

【参考方案1】:

您应该为 mysql RAND 使用种子以获得一致的结果。在 php 中你做一个

$paginationRandSeed = $_GET['paginationRandSeed']?
    ( (int) $_GET['paginationRandSeed'] ):
    rand()
;

在 MySQL 中你使用那个种子

"SELECT * FROM table ORDER BY RAND(".$paginationRandSeed.") LIMIT 0,20"

当然,您需要在页面请求中传播初始种子。

祝你好运, 阿林

【讨论】:

感谢您为我指明了正确的方向,您的解决方案非常适合我 在 MySQL 文档中学习更多关于这个 RAND() 函数的好点。我在我的客户网站上有一些房产报价列表,我添加了$seed = date('jnY');

以上是关于带有分页的MySql查询中的随机值的主要内容,如果未能解决你的问题,请参考以下文章

mysql的分页使用子查询?

使用MySQL实现分页查询

带有可分页的 Spring 自定义查询

请问,如何用一条SQL查询出分页的数据和总记录数啊?MySQL的!不用存储

MySQL oracle 分页

mysql分页原理和高效率的mysql分页查询语句