[MySQL] туплю....
Что неужто никто незнает?
Если я правильно помню, этот запрос выдаст примерно 70% рядов таблицы.
по логике вецей, он с 70% вероятностью выдаст ответ
Почему? Разве WHERE будет вычисляться только один раз?
просто если она выдаст по условию true или false, с соответственными вероятностями... вот и смотри, то получится
Хорошо, а если RAND заменить на RAND(ID)?
да конечно не один, что ты его слушаешь!
в смысле не один?
WHERE вычисляется не один раз, а для каждого элемента
про индексы что-нибудь слышал?
Что гадать-то, взять и проверить. В MySQL запрос select name from wakka_users where rand > 0.5; выдает действительно около половины записей. Rand вычисляется для каждой записи.
Во, а меня смущали..
гламурненько....
Но я хочу вынуть одно случайное значение. Как?
SELECT * FROM table ORDER BY RAND LIMIT 10;
Почему LIMIT 10? Он же одно значение хочет?
Как вынуть случайный ряд из нескольких?
ряд имел ввиду "один ряд из таблицы"
Вопрос решен, или тебя такое решение не устраивает?
Не, проблем не составит Спасибо!
SELECT * FROM table ORDER BY RAND LIMIT 10;На самом деле, если таблица большая, то очень уж долго это работает, по сравнению с простотой задачи Но ничего другого я тоже не знаю
n = RAND*общее количество
WHERE (ID = n)
Извините, что не составил конкретного запроса: с сиквелом несколько лет не общался, а справочника под рукой нет.
Ну не в каждой же таблице есть такой вот замечательный ID, который изменяется от 1 до общего количества В Oracle-е вроде есть rownum, а вот в MySQL-е нету...
я понимаю, но на практике ведь есть какой-то ИД? Правда, он не всегда числовой и не всегда диапазон сплошной
Зато везде можно сделать этот ID - в temporary table. И уже по ней прогнать запрос.
Оставить комментарий
Ivan826
Как вынуть случайный ряд из нескольких?