Я хотел бы выбрать случайную запись из таблицы, но с уклоном в сторону более высоких значений в определенном поле - я не хочу, чтобы какая-либо запись имела вероятность выбора 0%, просто с меньшей вероятностью быть выбранным.
Из этой статьи я знаю, что случайный выбор может быть медленным, и вы можете ускорить его: http://wanderr.com/jay/order-by-slow/2008/01/30/
Но как насчет того, когда вы имеете дело с несколькими таблицами с соединениями и оператором where и хотите использовать одно из полей как способ сместить случайность (чем выше значение этого поля, тем больше вероятность того, что оно будет выбрано)? Например:
SELECT a.id, a.date, a.userid, b.points FROM table_a AS a INNER JOIN table_b AS b ON (a.userid = b.userid) WHERE DATE_SUB(CURDATE(), INTERVAL 60 DAY) <= a.date
Как я мог бы превратить приведенное выше в эффективный, но не действительно случайный запрос, который был бы смещен в сторону более высоких значений b.points?