Firebird / Выбрать случайным образом n записей
От: DemAS http://demas.me
Дата: 18.01.03 08:27
Оценка:
Есть таблица статей:

id — primary key
name
context
readed — пометка о том, что прочитанно

Статей много и выдавать пользователю все нет смысла:

select * from table where readed=0


будет работать слишком долго и вернет столько, что пользователь все равно все не прочтет.

select first 50 * from table where readed=0


— уже лучше. Но дело в том, что при выполнении этого запроса эти 50 записей будут одни и те же. А хотелось бы чтобы при каждом выполнении запроса эти 50 записей выбирались случайным образом.

Возможно ли это ?

Если это невозможно, то пойдет и такой вариант:

select first 50 * from table where readed=0 and id>n


Где n — случайное число. Тогда можно будет сделать хранимую процедуру, в которой вычисляется n и возвращается набор данных. Вот только как получить случайное число ? Нужен UDF или есть готовая функция ?
... << Играет Лицо>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.