Выберите Random Row из SQL с помощью PHP

Я хочу запросить 5 случайных строк из моей таблицы SQL, используя php. например, мне нужно:

mysql_query("SELECT * FROM catalogue >> not sure what goes here << LIMIT 5");

Ответ 1

SELECT * FROM catalogue order by RAND() LIMIT 5

Редактировать:

Для чего стоит, обратите внимание, что использование rand() на столе с большим количеством строк будет медленным. Это может привести к краху вашего сервера.

Некоторые решения:

MediaWiki использует интересный трюк (для функции Википедии Special: Random): таблица со статьями имеет дополнительный столбец со случайным числом (сгенерированным при создании статьи). Чтобы получить случайную статью, создайте случайное число и получите статью со следующим большим или меньшим (не помните, какое) значение в столбце случайного числа. С индексом это может быть очень быстро. (И MediaWiki написан на PHP и разработан для MySQL.)

Но это только для одной случайной строки.

Ответ 2

Предполагая, что в таблице есть AUTO INCREMENT, вы можете получить самый большой идентификатор с

SELECT id FROM catalogue ORDER BY id DESC LIMIT 1

и наименьший ID с

SELECT id FROM catalogue ORDER BY id ASC LIMIT 1

что позволяет сделать это

$randomId = mt_rand($smallestId, $biggestId);
$randomSql = mysql_query("SELECT * FROM catalogue WHERE id='$randomId'");

Для пяти строк вы можете создать случайный идентификатор пять раз.

Ответ 3

Если вы выбираете случайные строки из очень большой таблицы, вы можете поэкспериментировать с подходами в следующей ссылке:

http://akinas.com/pages/en/blog/mysql_random_row/

примечание: просто поделиться другими вариантами со всеми