@PoopZemli

Как в mysql выбрать случайные строки с повторениями?

К примеру, есть у меня такой код:
SELECT col_name
FROM table
WHERE foo = 42
ORDER BY RAND()
LIMIT %сколько надо%

Эта штука нужна для ботов, поэтому было бы более реалистично, если бы они иногда получали одинаковые строчки из таблицы. Кроме того, если %сколько надо% больше количества строк в таблице (в начале работы такое бывает), возвращается меньше результатов, чем надо.

Можно ли средствами mysql сделать так, чтобы строки могли повторяться, и чтобы количество возвращаемых результатов всегда было равно указанному в LIMIT числу?
  • Вопрос задан
  • 2359 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mnbck
Если непосредственно по вопросу, то строки с повторениями (дубликаты) можно выбрать вот так:
select ...
from ...
where ...
group by ...
having count(...)>1

Но я подозреваю - это не то, что вам нужно.

Если по тексту вопроса то, как вариант, можно предложить:
select *
from(
SELECT col_name
FROM table
WHERE foo = 42
union all
SELECT col_name
FROM table
WHERE foo = 42
ORDER BY RAND())
LIMIT %сколько надо%

Таким образом вы получите набор из дважды повторяющихся данных, а затем выберете сколько надо.
Но решение, на мой же взгляд не очень, думаю для генерации такой последовательности нужно смотреть в сторону хранимых процедур или рекурсивных запросов (если в mysql они есть).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы