powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Замена order by rand
11 сообщений из 11, страница 1 из 1
Замена order by rand
    #39424511
biohan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

При использование

SELECT f.id, f.login, f.password FROM ts f
JOIN ( SELECT RAND() * (SELECT MAX(id) FROM ts) AS max_id ) AS m
WHERE f.id >= m.max_id and active = 0
LIMIT 1;

Всегда получается одна и та же строка. Если убрать active = 0, то получаются разные.
Подскажите как переделать зарос, чтобы с active = 0 всегда были разные строки

Модератор: Тема перенесена из форума "NoSQL, Big Data".
...
Рейтинг: 0 / 0
Замена order by rand
    #39424566
прохожий456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
biohan,

а что в таблице ts? сколько строк, какие id?
...
Рейтинг: 0 / 0
Замена order by rand
    #39424567
biohan,

а они вообще есть эти "другие строки" ? А то мож она одна и есть?
...
Рейтинг: 0 / 0
Замена order by rand
    #39424571
biohan,

почему просто не сделать
SELECT f.id, f.login, f.password FROM ts f
WHERE active = 0
order by RAND()
LIMIT 1;
...
Рейтинг: 0 / 0
Замена order by rand
    #39424595
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем селект в селекте? делайте сразу
Код: sql
1.
JOIN ( SELECT RAND() * MAX(id) AS max_id FROM ts ) AS m


И на всякий случай отключите кэширование для запроса.

Добрый Э - Эхпочему просто не сделать
Да небось таблица большая, а order by RAND() недёшев... к тому же твой запрос неэквивалентен исходному - там при наличии пропусков в значениях ID вероятность возврата записи, перед которой дырка, тем выше, чем больше эта дырка, а у тебя вероятности для всех записей равны.
...
Рейтинг: 0 / 0
Замена order by rand
    #39424599
Akina,

тогда для начала нужно спросить - а что вообще ТС пытается получить?
...
Рейтинг: 0 / 0
Замена order by rand
    #39424608
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхтогда для начала нужно спросить - а что вообще ТС пытается получить?
Ну спроси, делов-то...
...
Рейтинг: 0 / 0
Замена order by rand
    #39424624
Военком
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - ЭхAkina,

тогда для начала нужно спросить - а что вообще ТС пытается получить?

Да ничего он не пытается. Это son456 барагозит тут под другим ником. Думает его не узнает никто и он опять будет по работе своей спрашивать всякую шнягу и просить чтоб за него что-то сделали. Вк уже удалил со всеми своими шедеврами, но мы-то знаем, что это за фрухт....
...
Рейтинг: 0 / 0
Замена order by rand
    #39425266
biohan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эхbiohan,

а они вообще есть эти "другие строки" ? А то мож она одна и есть?

Строки есть

База на 400к строк.
Каждый раз нужно получить рандомную строку где active = 0
просто order by rand() долго
...
Рейтинг: 0 / 0
Замена order by rand
    #39425383
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
set @a = ROUND(RAND() * (SELECT MAX(id) FROM tbl_name));
SELECT id FROM tbl_name WHERE id > @a ORDER BY id LIMIT 1
...
Рейтинг: 0 / 0
Замена order by rand
    #39425982
biohan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hett
Код: sql
1.
2.
set @a = ROUND(RAND() * (SELECT MAX(id) FROM tbl_name));
SELECT id FROM tbl_name WHERE id > @a ORDER BY id LIMIT 1



А где условие с active = 0 прописать?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Замена order by rand
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]