Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Случайная выборка из таблици одной строки.
Покинул форум
Сообщений всего: 48
Дата рег-ции: Март 2008
Помог: 0 раз(а)
Каким-нибудь образом возможно, скажем из таблица случайным образом извлечь одну строку? Допустим, в таблице имеется 20 строк, как из этих 20 случайно выбрать одну. Случайно, имеется ввиду, что-то типа функции rand() в PHP.
EuGen
Отправлено: 25 Апреля, 2008 - 10:11:17
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
SELECT * FROM `your_table` ORDER BY RAND() LIMIT 1
Не рекомендуется для больших (>100000 строк) таблиц
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
SergeantPEPPER
Отправлено: 25 Апреля, 2008 - 11:44:10
Частый гость
Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007 Откуда: Казань
Помог: 0 раз(а)
А почему не рекоменуется?
EuGen
Отправлено: 25 Апреля, 2008 - 12:07:42
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Потому что для таблицы в N строк фактически генерируется столбец из N случайных чисел, да еще потом происходит сортировка, причем ясное дело, это будет неиндексированная сортировка. В этом случае при больших размерах таблицы запрос будет занимать большое время (неоправданно большое).
Вообще задача выборки случайной строки нетривиальна и есть разные подходы к ее решению. Если вспомню, где я находил статью про эту задачу, выложу тут ссылку.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
rar
Отправлено: 25 Апреля, 2008 - 15:12:56
Новичок
Покинул форум
Сообщений всего: 48
Дата рег-ции: Март 2008
Помог: 0 раз(а)
Спасибо.
Если статью выложите, то будет совсем замечательно.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.