我需要實現一個半隨機排序列表中, 我需要能夠解決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