Mysql вероятность выборки записи

Имеет таблицу с полем date.(TIMESTAMP).
Нужно выбрать одну запись, причем условие выборки таково: чем ближе дата к реальному времени, тем больше вероятность выбрать "эту" запись. Т.е. у самых последних(старых) записей вероятность будет = 0.

1 ответов


1. Выбрать все записи
2. Реализовать в коде нужный алгоритм, по нему получить id записи
3. Вывести запись


Сначала надо строки отсортировать от большей даты к меньшей. Теперь надо сгенерировать число XXX в диапазоне от 0 до кол-ва строк в таблице, причем вероятность выпадения 0 должна быть выше (по экспоненте или еще как-либо).
Далее получить одну строку из базы, используя полученный номер строки:

select * from TABLE order by DATE desc limit XXX,1;

SELECT * FROM table ORDER BY RAND(100, 500) / (ABS(DATE_DIFF(NOW(), date)) + 1) LIMIT 1