|
MySQL.RU - Webboard
Вернуться
select ... order by псевдо-rand (sergius) 29/01/2013 - 17:15:30
Re: select ... order by псевдо-rand (Akina) 29/01/2013 - 18:04:19
> Original message text:
> From: sergius - 29/01/2013 - 17:15:30
> Subject:select ... order by псевдо-rand
> -----------------
> Нужно сделать выборку записей из таблицы в псевдо-случайном порядке. Объясню, что в данном случае означет псевдо-случайным: несмотря на то, что строки в результате выборки должны быть перемешаны, результат такого запроса должен быть всегда одинаковым. То есть выводить строки в случайном порядке, но этот порядок задаётся какой-то константой, меняя которую можно менять этот порядок (случайным образом), но если константа неизменна, то каждый раз результат должен быть одинаковым.
>
> Аналогия:
> 1. создать в таблице дополнительное поле
> 2. заполнить его для всех строк таблицы случайным содержимым
> N. делать запросы SELECT ... ORDER BY это поле
> ...
> При необходимости сменить результат выборки повторить пункт 2.
>
> Может быть можно как-то обойтись без дополнительного поля и сделать проще?
>
From: Akina - 29/01/2013 - 18:04:19
Subject:select ... order by псевдо-rand
-----------------
При сравнительно небольшом количестве записей в таблице и наличии в таблице неизменного (например, ключевого) поля типа INTEGER можно в качестве псевдослучайного, но постоянного при последовательных выборках, генератора использовать order by rand(id+N), где N - номер псевдослучайной последовательности. Но надо следить, чтобы id+N не вызывал переполнения.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
42099
|
|