Я хочу запросить 5 случайных строк из моей таблицы SQL, используя php. например, мне нужно:
mysql_query("SELECT * FROM catalogue >> not sure what goes here << LIMIT 5");
Я хочу запросить 5 случайных строк из моей таблицы SQL, используя php. например, мне нужно:
mysql_query("SELECT * FROM catalogue >> not sure what goes here << LIMIT 5");
SELECT * FROM catalogue order by RAND() LIMIT 5
Редактировать:
Для чего стоит, обратите внимание, что использование rand() на столе с большим количеством строк будет медленным. Это может привести к краху вашего сервера.
Некоторые решения:
MediaWiki использует интересный трюк (для функции Википедии Special: Random): таблица со статьями имеет дополнительный столбец со случайным числом (сгенерированным при создании статьи). Чтобы получить случайную статью, создайте случайное число и получите статью со следующим большим или меньшим (не помните, какое) значение в столбце случайного числа. С индексом это может быть очень быстро. (И MediaWiki написан на PHP и разработан для MySQL.)
Но это только для одной случайной строки.
Предполагая, что в таблице есть 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'");
Для пяти строк вы можете создать случайный идентификатор пять раз.
Если вы выбираете случайные строки из очень большой таблицы, вы можете поэкспериментировать с подходами в следующей ссылке:
http://akinas.com/pages/en/blog/mysql_random_row/
примечание: просто поделиться другими вариантами со всеми