我需要实现一个半随机排序列表中, 我需要能够解决X的项目,如第一批,其余由随机半随机顺序
问题命令,
会像
"..ORDER BY fixed DESC, rand"
其中固定是一个布尔?
如果不是,你会怎么建议?
我需要实现一个半随机排序列表中, 我需要能够解决X的项目,如第一批,其余由随机半随机顺序
问题命令,
会像
"..ORDER BY fixed DESC, rand"
其中固定是一个布尔?
如果不是,你会怎么建议?
按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个项目进行排序,而不是整个表格。
我不明白这是什么@关于...:$ btw,该列表将约为最多20个项目 – 2011-05-09 11:50:59
@Toni,有些人有100万条记录,第一个查询将会非常慢,记录很多,第二更不如此。 – Johan 2011-05-09 20:43:55
应该用一个很小的修正就可以了:'ORDER BY fixed DESC,RAND()'。 – Jon 2011-05-08 11:47:37