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 :: Запрос по рандому из таблицы
Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007 Откуда: Казань
Помог: 0 раз(а)
Подскажите SQL-запрос, который взял бы из таблицы `mytable` 5 случайных (random) записей... Заранее спасибо.
valenok
Отправлено: 23 Ноября, 2007 - 18:28:08
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
SELECT * FROM `tbl` ORDER BY rand() LIMIT 5
----- Truly yours, Sasha.
SergeantPEPPER
Отправлено: 23 Ноября, 2007 - 18:32:11
Частый гость
Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007 Откуда: Казань
Помог: 0 раз(а)
Спасибо!
Kosteg
Отправлено: 17 Апреля, 2008 - 09:44:29
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008
Помог: 0 раз(а)
А можно уточнить, эти записи не будут повторяться?
valenok
Отправлено: 17 Апреля, 2008 - 12:07:01
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
ну только если функция rand выдаст дважды то же число
и то если оно во величине попадёт в топ 4
----- Truly yours, Sasha.
Kosteg
Отправлено: 21 Апреля, 2008 - 09:08:11
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008
Помог: 0 раз(а)
А как сделать, что бы повторные значения не выводились? Допустим, значение выборки будет больше - не 5 а 20 или 40. Тут же шанс повторного выпадения уже выше.
valenok
Отправлено: 21 Апреля, 2008 - 17:49:17
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
шанс 1 из 99999999 или 40/99999999
Действительно больше ..
А вообщем я слышал некоторым людям абсолютно не везёт ..
----- Truly yours, Sasha.
Kosteg
Отправлено: 21 Апреля, 2008 - 20:19:27
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008
Помог: 0 раз(а)
Не, мне это не для проверки везения =). Это для того, что бы если в БД имеется 100 вопросов, то в тест подавались случайные 20, и они не повторялись.
EuGen
Отправлено: 22 Апреля, 2008 - 09:43:57
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
SELECT DISTINCT
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Kosteg
Отправлено: 22 Апреля, 2008 - 12:15:09
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Март 2008
Помог: 0 раз(а)
DISTINCT вместо "ORDER BY" ?
valenok
Отправлено: 22 Апреля, 2008 - 13:35:54
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
SELECT DISTINCT `abc` FROM `def` ORDER BY RAND() LIMIT 15000;
----- Truly yours, Sasha.
SergeantPEPPER
Отправлено: 23 Апреля, 2008 - 09:02:20
Частый гость
Покинул форум
Сообщений всего: 245
Дата рег-ции: Сент. 2007 Откуда: Казань
Помог: 0 раз(а)
Ух ты...
Мой престарелый вопрос снова ожил
Kosteg пишет:
DISTINCT вместо "ORDER BY" ?
это странный вопрос - лучше срежде немного разобраться в синтаксисе SQL
ORDER BY - отвечает за поле, по которому будет вестись сортировка (в данном случае "сортировки" как таковой нет, т.к. порядок сортировки rand())
DISTINCT - как раз цель обсуждения - это указание, чтобы выбираемые записи не повторялись.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.