Я знаю, что есть похожие вопросы, но вот моя реализация для строки быстрого случайного выбора:
SELECT i.id, i.thumb_img, i.af, i.width, i.height
FROM images_detail id
JOIN images AS i ON id.imageid = i.id
WHERE id.imageid >=1
AND id.newsroom =1
AND i.width > i.height
AND id.imageid >= FLOOR( 1 + RAND( ) *23111593 )
LIMIT 1
Проблема с этим запросом заключается в том, что безразличное выражение RANDOM в id.imageid >= FLOOR( 1 + RAND( ) *23111593 )
он всегда возвращает один и тот же идентификатор, почему?Любая помощь, пожалуйста?
Позже редактировать:
Запрос занимает 0,0005 секунд, используя EXPLAIN
, он сообщает USING WHERE
и 12993 ROWS
вернул
Идентификаторыс автоматическим приращением это не 23111593, потому что RAND () возвращает 0.xxxxx, поэтому RAND () * 23111593 возвращает около 12993 строк.Проблема в том, что тот же идентификатор находится сверху, и я не хочу вызывать предложение ORDER BY.