在mysql表

时间:2015-06-23 12:26:45

标签: php mysql sql

我有一个表images,其ID从1到5000开始。在页面上,它们直接从1到5000显示。我想知道是否有可能对数据库表中的记录进行加扰而不是通过{查询它们页面上的{1}}因为它们在每次刷新时都是随机的。我不想要这个。

例如RAND() .. id(1) to become id(343)等等......只是加扰它们。

更新: 这是我正在尝试的查询

id(453)->id(4444)

执行时我得到alter table images add column randorder double; update table images set randorder = rand(); create index idx_table_randorder on table(randorder); randorder但查询又返回

  

1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在第1行的“table images set randorder = rand()”附近使用正确的语法

2 个答案:

答案 0 :(得分:1)

这个怎么样?

alter table add column randorder double;

update table
    set randorder = rand();

create index idx_table_randorder on table(randorder);

然后你可以"洗牌"记录:

select t.*
from table t
order by randorder;

这将使用索引,因此速度很快。它是稳定的,因此它将通过分页工作。如果要更改排序,可以使用update

答案 1 :(得分:0)

将行保存到数组中。然后运行:

shuffle($array);

请参阅http://php.net/manual/en/function.shuffle.php