Программирование > PHP

случайная выборка из mysql

<< < (3/4) > >>

mymind:
Выбирает строки по условию но порядок строк всегда один и тот же .. В этом вся загвозка, когда делаешь просто SELECT * FROM table ORDER BY RAND() LIMIT 1 - то, да. Выборка случайно идет. Но когда вклиниваешь условия, то результат постоянный. Пока не знаю в чем причина.

Daiz13:
чем полдня ждать ответа, поискал бы в Гугле, там достаточно примеров кто и как это решал

mymind:
Интересно вот что ... когда использовал вот такую конструкцию, то процес, как говориться, пошел ...
SELECT *,(RAND()*100) AS rnd
FROM `table`
WHERE col >0 AND
TYPE =1 AND
idsquare!=2
ORDER BY rnd
LIMIT 1

В итоге выборка пошла случайно. Если убрать из SELECT где мы выбираем (RAND()*100) AS rnd то снова получаем один и тот же порядок, точнее запись будет выпадать одна и та же ...
Хотя заметил, что псевдослучайность тут тоже не ахти какая. Очень часто выпадает первая запись, даже чаще чем другие.

Так что вопрос о выборке из базы случайно остается открытым.

Forza:
Сам Man MySQL не рекомендует использовать RAND() таким образом: Оператор RAND() не следует воспринимать как полноценный генератор случайных чисел: это просто быстрый способ динамической генерации случайных чисел, переносимых между платформами для одной и той же версии MySQL.
В качестве альтернативы можно, если заранее знаешь кол-во строк в таблице, генерировать случайное число в скрипте, а потом подставлять его в LIMIT N, 1

Меняздесьдавнонет:
select count(*) from table
$rnd=rand(0,$total);
select * from table limit $rnd,1

Навигация

[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 
Перейти к полной версии