Общие > Базы данных

Выбрать 1 случайную запись.

(1/6) > >>

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]

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии