我需要实现一个半随机的列表, 我需要能够将x项目作为第一项修复,其余的则按随机排序
问题,
会像
"..ORDER BY fixed DESC, rand"
其中fixed是布尔值?
如果没有,你会怎么建议?
答案 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个项目,而不是整个表格。