как получить случайные данные из базы данных? - PullRequest
1 голос
/ 16 апреля 2009

У меня есть таблица продуктов. Я перечислил элементы с нумерацией страниц, используя функцию rand (). При использовании rand () элементы отображаются в случайном порядке, но запись повторяется, пока мы переходим с 1 страницы на другую. Можно ли получить неповторяющиеся элементы на каждой странице, используя rand ()? Если да, то как, если нет, что может быть вариантом для этого.

Ответы [ 3 ]

3 голосов
/ 16 апреля 2009

Что ж, вы можете создать случайное начальное число при выполнении первого запроса (в коде приложения), а затем сохранить это начальное значение между запросами - и передать это начальное значение для функции rand([seed]). Это должно сделать это ...

Конечно, специфика будет зависеть от того, как именно ваш SQL-код работает в данный момент; вам может понадобиться выполнить цикл, чтобы перейти к первой странице (или около того) случайных чисел, которые нужно игнорировать.

0 голосов
/ 11 февраля 2013

ВЫБРАТЬ столбец ИЗ таблицы ЗАКАЗАТЬ ПО RAND () LIMIT 1

0 голосов
/ 16 апреля 2009

В такой ситуации я мог бы посмотреть, есть ли способ создать список идентификаторов продуктов (я предполагаю, что у каждого продукта есть какой-то уникальный идентификатор) и перемешать его. Список может быть сохранен как временная таблица базы данных, или он может быть сохранен как переменная сеанса в вашем веб-приложении, например ... таким образом, вы можете получить доступ к любой части случайно упорядоченного списка без необходимости повторного вычисления всего объекта. с самого начала.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...