Добро пожаловать, Гость!
Случайная запись из Mysql
PHP/MySQL | Случайная запись из Mysql


Случайная запись из Mysql
14 Апр 2015кто хороша знает MySQL, подскажите плиз как можно из бд вывести случайный дневник? чтоб после обновлении страницы менялся дневник на другой.
Последний раз редактировалось biket
26 Апр 2015
Комментарии:



SakamskY, На такой случай в pdo есть метод fetchAll. Он выбирает абсолютно все записи по условию в один массив. Далее из этого массива можно получить количество ключей и выбрать случайную запись. Все делается одним запросом



biket (26 Апр 2015):
Rand в mysql очень медленный способ. Лучше использовать другие варианты. Например, сначала получить общее количество записей, а потом выбрать случайное число с помощь php.
biket, поддержу. но есть способы оптимизации рандомной выборки запросомRand в mysql очень медленный способ. Лучше использовать другие варианты. Например, сначала получить общее количество записей, а потом выбрать случайное число с помощь php.



SakamskY, Первым запросом получить массив id записей, а затем выбрать случайный элемент из массива.
______________________
Установи себе подпись: Ссылка



biket (26 Апр 2015):
Rand в mysql очень медленный способ. Лучше использовать другие варианты. Например, сначала получить общее количество записей, а потом выбрать случайное число с помощь php.
biket, я с тобой не согласен. А если той записи, которая выпадет в рандоме, не будет существовать (удалена)? Придется выбирать заново, но где гарантия, что опять не выпадет число, записи которой в базе нет? Опять придется через рандом на php. А что если таких записей, который не существует, много? rand() в mysql выбирает рандомно из существующих записей из таблицы. В данном случае с rand() будет значительнее быстрее Rand в mysql очень медленный способ. Лучше использовать другие варианты. Например, сначала получить общее количество записей, а потом выбрать случайное число с помощь php.

------------------
А если там записи с идентификаторами, начиная от 50 к примеру и до 60, но при этом нету 53, 56, 59
А скрипт будет выбирать от 1-7. Вообще возникнет циклическая ошибка.



Rand в mysql очень медленный способ. Лучше использовать другие варианты. Например, сначала получить общее количество записей, а потом выбрать случайное число с помощь php.
______________________
Установи себе подпись: Ссылка


<?php
$query = mysql_query("SELECT * FROM `notes` ORDER BY rand() LIMIT 1");
while ($post = mysql_fetch_assoc($query))
{
echo '<a href="/plugins/notes/list.php?id='.$post['id'].'"> <b>'.text($post['name']).'</b> </a>';
}
?>