半随机顺序

时间:2011-05-08 11:45:43

标签: mysql serialization sql-order-by

我需要实现一个半随机的列表, 我需要能够将x项目作为第一项修复,其余的则按随机排序

问题,

会像

"..ORDER BY fixed DESC, rand"

其中fixed是布尔值?

如果没有,你会怎么建议?

1 个答案:

答案 0 :(得分:0)

根据Jon的评论,

@rank:= 0; 
SELECT * FROM (
  SELECT @rank:= @rank +1 as rank, * FROM table1 
  ) s ORDER BY (s.rank < 10) DESC, RAND()    

然而,这会起作用,这会强制对整个表的随机顺序进行排序。

以下内容会更快。

@rank:= 0; 
SELECT s.* FROM 
  (
  SELECT @rank:= @rank +1 as rank, * FROM table1 LIMIT 200
  ) s
ORDER BY (s.rank < 10) DESC, RAND();

因为这只会排序200个项目,而不是整个表格。