Выберите случайную строку из SQL с помощью PHP
Я хочу запросить 5 случайных строк из моей таблицы SQL с помощью php. например, мне нужно:
mysql_query("SELECT * FROM catalogue >> not sure what goes here << LIMIT 5");
3 answers
SELECT * FROM catalogue order by RAND() LIMIT 5
Изменить:
Как бы то ни было, пожалуйста, обратите внимание, что использование rand() в таблице с большим количеством строк будет медленным. Это может привести к сбою вашего сервера.
Некоторое решение:
MediaWiki использует интересный трюк (для специальной функции Википедии: Случайная функция): в таблице со статьями есть дополнительный столбец со случайным числом (генерируется при создании статьи). Чтобы получить случайную статью, сгенерируйте случайное число и получите статью со следующим большим или меньшее (не помню, какое) значение в столбце случайных чисел. С индексом это может быть очень быстро. (И MediaWiki написан на PHP и разработан для MySQL.)
Но это только для одной случайной строки.
Предполагая, что в таблице есть АВТОМАТИЧЕСКОЕ УВЕЛИЧЕНИЕ, вы можете получить самый большой идентификатор с помощью
SELECT id FROM catalogue ORDER BY id DESC LIMIT 1
И наименьший идентификатор с
SELECT id FROM catalogue ORDER BY id ASC LIMIT 1
Что позволяет сделать это
$randomId = mt_rand($smallestId, $biggestId);
$randomSql = mysql_query("SELECT * FROM catalogue WHERE id='$randomId'");
Для пяти строк вы можете создать случайный идентификатор пять раз.
Если вы выбираете случайные строки из очень большой таблицы, вы можете поэкспериментировать с подходами по следующей ссылке:
Http://akinas.com/pages/en/blog/mysql_random_row/
Примечание: просто чтобы поделиться другими вариантами со всеми