Общие > Базы данных
Выбрать 1 случайную запись.
Alexandr:
Необходимо сделать сабж. Сделал так:
SELECT anek FROM anek WHERE id=(1+FLOOR(MAX(id)*RAND()))
а он мне
1111 - Invalid use of group function - -1 rows affected
так
SELECT * FROM anek HAVING id=(1+FLOOR(MAX(id)*RAND()))
не робит правильно.
Мож кто подскажет оптимальный вариант, а я сделал так
SELECT anek FROM anek ORDER BY RAND() LIMIT 1
Но мне кажется это коряво.:insane:
Tronyx:
--- Цитировать ---Но мне кажется это коряво.
--- Конец цитаты ---
А вроде не очень и коряво. Можно id самому генерировать (в скрипте), но это хуже...
Alexandr:
--- Цитировать ---Можно id самому генерировать (в скрипте)
--- Конец цитаты ---
Нельзя. Т.к. придётся 2 запроса делать:
1 - Узнаём мах id (или весь массив id)
2 - Выбираем строку по случайному id.
--- Цитировать ---А вроде не очень и коряво.
--- Конец цитаты ---
Да нет коряво. Т.к. используется ORDER и следовательно приходится выбирать сначала все записи, а далее их сортировать в случ. порядке и всё это ради одной записи.
Совсем др. дело первый запрос (если бы он работал), выбираем всего 1 запись и + используем примари кей.
ThE0ReTiC:
--- Цитировать ---Узнаём мах id
--- Конец цитаты ---
Надо дергать весь массив. У тебя не обязательно id упорядоченно идет.
Alexandr:
--- Цитировать ---Надо дергать весь массив.
--- Конец цитаты ---
Именно в моем скрипте/случае достаточно узнать мах.
[OFF]Я же упомянул это в скобках в пред. посте[/OFF]
Навигация
Перейти к полной версии