Выбрать случайным образом поле из БД

BeatBox

Guest
Выбрать случайным образом поле из БД

Здравствуйте,
есть вопросик - как Выбрать случайным образом поле из БД? Тоесть рендом. Можно так?
 

Buteo

[CDR/DVP]
аааааааааа..... держи меня, щас кое-кого пошлю...... в............ поиск... :)))

~
извините не сдержался... сори
 

BeatBox

Guest
ой. Да. запись.
Делаю "случайны показ" кой-чего из БД, нужно выбрать данные из случайно записи в таблице test
 

BeatBox

Guest
MySql ;)

-~{}~ 29.03.05 23:42:

Тесть мне нужно взять записи из базы данных где поле "а" выбираеться рандомно.
 

Demiurg

Guest
... order by rand() limit 1
правда желательно, что бы все это проходило при небольших нагрузках.
 

BeatBox

Guest
ага. Спасибо. Будет браться 3 записи, значит лимит 3.

только я думал что будет чтото вроде
select field from table where id(случайно выбрано).
;)
Спасибо ещё ра
 

BeatBox

Guest
Demiurg
появился вопрос
из кода ... order by rand() limit 1
получаеться что будет браться не рандомная запись, а только ордер по рандомному полю, и соответственно максимальное кол-во случайно выведенных вариантов не равно кол-ву записей в этой таблице а равно кол-ву поелй в этой таблице.
Тоесть если в таблице два поля
id | name
и 4 записи:
1 тест
2 проверка
3 отладка
4 ошибка


то ... order by rand() limit 1 максимум выведет два варианта:
или 1 тест (ордер по номеру) или 3 отладка (ордер по алфавиту).
Я правильно понял?
А мне нужно чтобы выбрало все данные из случайно записи, тоесть или 1 тест или 2 проверка или 3 отладка или 4 ошибка
 

Demiurg

Guest
>Я правильно понял?
нет, попробуй провести эксперемент самомтоятельно, name в запросе никак не фигурирует
 
BeatBox
А еще правильней, если Вы увидили что-то, и у Вас есть подозрение, что либо Вы, либо Вас неправильно поняли - просканируйте ответ по мануалу. Ибо Мануал - всегда Ваш первый друг и советчик.
MySQLDoc::rand()
 

berkut

Новичок
Demiurg
... order by rand() limit 1
правда желательно, что бы все это проходило при небольших нагрузках.
а что оптимальнее, если таблица очень большая,
... order by rand() limit 1
или
id - primary key, auto increment
'SELECT id FROM table'
$id = mysql_result($result_set, rand(0, mysql_num_rows($result_set) - 1);
"SELECT * FROM table WHERE id = $id"
 

SiMM

Новичок
> SELECT id FROM table
> SELECT * FROM table WHERE id = $id
А головой думать пробовал?
 

Demiurg

Guest
berkut
id могут идти не по порядку.
оптимальное решение ищется в каждом конкретном случае.
 

berkut

Новичок
SiMM
вообще не понял, что неправильно-то?
Demiurg
то что я описал, как раз и работает в том случае, когда id не по порядку.
Дмитрий Попов
будем пробывать.
 

Demiurg

Guest
berkut
работает, если между двумя селектами не было апдейтов.
про то, скакой скоростью это будет работать я говорить не буду.
 

Фанат

oncle terrible
Команда форума
Это решение мне кажется имеющим право на существование.
berkut, отчего бы тебе самому не попробовать, и нам рассказать?
 
Сверху