Как сгенерировать 5 случайных чисел в хранимой процедуре MySQL - PullRequest
3 голосов
/ 16 ноября 2011

Как мне сгенерировать 5 уникальных случайных чисел?

Теперь у меня есть что-то вроде

declare v_counter integer;
declare v_random integer;
declare v_result varchar(10);

select FLOOR(1+(rand()*50)) into v_result;
set v_counter=0;
while v_counter < 4 then
    select FLOOR(1+(rand()*50)) into v_random;
    set v_result = concat(v_result,'|',v_random;
    v_counter = v_counter + 1;
end while;

Результат может выглядеть так:

12|22|3|46|3

Числа должны быть уникальными и отсортированы так, чтобы они выглядели так:

1|2|3|4|5

Есть идеи?

1 Ответ

2 голосов
/ 16 ноября 2011

Если ваш диапазон маленький, и у вас есть таблица целых чисел , наивный подход может сработать:

SELECT GROUP_CONCAT(i SEPARATOR '|')
  FROM (  SELECT i
            FROM (  SELECT i
                      FROM integers
                     WHERE i BETWEEN 1 AND 50
                  ORDER BY RAND()
                     LIMIT 5) sort_these_five
        ORDER BY i) concat_these_five;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...