[MySQL] туплю....

Ivan826

Как вынуть случайный ряд из нескольких?

Ivan826

Что неужто никто незнает?

maggi14

SELECT * FROM Tabliza WHERE (RAND > 0.3)
Если я правильно помню, этот запрос выдаст примерно 70% рядов таблицы.

stm7884696

по логике вецей, он с 70% вероятностью выдаст ответ

maggi14

Почему? Разве WHERE будет вычисляться только один раз?

stm7884696

да, 1 раз..
просто если она выдаст по условию true или false, с соответственными вероятностями... вот и смотри, то получится

maggi14

Хорошо, а если RAND заменить на RAND(ID)?

rosali

да конечно не один, что ты его слушаешь!

stm7884696

в смысле не один?

vlfdimir58

не один, а много.
WHERE вычисляется не один раз, а для каждого элемента

ava3443

> WHERE вычисляется не один раз, а для каждого элемента
про индексы что-нибудь слышал?

ma3yp

Что гадать-то, взять и проверить. В MySQL запрос select name from wakka_users where rand > 0.5; выдает действительно около половины записей. Rand вычисляется для каждой записи.

maggi14

Во, а меня смущали..

stm7884696

гламурненько....

Ivan826

Не, я конечно понимаю что эта круто
Но я хочу вынуть одно случайное значение. Как?

avinir60

SELECT * FROM table ORDER BY RAND LIMIT 10;

ava3443

Почему LIMIT 10? Он же одно значение хочет?

avinir60

Как вынуть случайный ряд из нескольких?

Ivan826

ряд имел ввиду "один ряд из таблицы"

avinir60

Думаю вместо 10 поставить 1 не составит проблем.
Вопрос решен, или тебя такое решение не устраивает?

Ivan826

Не, проблем не составит Спасибо!

rosali

SELECT * FROM table ORDER BY RAND LIMIT 10;
На самом деле, если таблица большая, то очень уж долго это работает, по сравнению с простотой задачи Но ничего другого я тоже не знаю

maggi14

А нельзя сделать
n = RAND*общее количество
WHERE (ID = n)
Извините, что не составил конкретного запроса: с сиквелом несколько лет не общался, а справочника под рукой нет.

rosali

Ну не в каждой же таблице есть такой вот замечательный ID, который изменяется от 1 до общего количества В Oracle-е вроде есть rownum, а вот в MySQL-е нету...

maggi14

я понимаю, но на практике ведь есть какой-то ИД? Правда, он не всегда числовой и не всегда диапазон сплошной

ava3443

> Ну не в каждой же таблице есть такой вот замечательный ID, который изменяется от 1 до общего количества.
Зато везде можно сделать этот ID - в temporary table. И уже по ней прогнать запрос.
Оставить комментарий
Имя или ник:
Комментарий: