полу случайный порядок - PullRequest
1 голос
/ 08 мая 2011

Мне нужно реализовать полуслучайный список, мне нужно иметь возможность исправить x элементов в качестве первых, а остальные упорядочить случайным образом

вопрос,

будет ли что-то вроде

"..ORDER BY fixed DESC, rand"

где fixed является логическим значением?

если нет, как бы вы предложили?

1 Ответ

0 голосов
/ 08 мая 2011

Согласно комментарию Джона,

@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 элементов, а не полная таблица.

...