Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to generate 5 random numbers in mysql stored procedure

How can I generate 5 unique random numbers?

Now I have something like

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;

The result can look like this:

12|22|3|46|3

The numbers need to be unique and sorted so it looks like:

1|2|3|4|5

Any idea?

like image 808
mario Avatar asked Nov 30 '25 21:11

mario


1 Answers

If your range is small, and you have an integers table, a naive approach might work:

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;
like image 94
pilcrow Avatar answered Dec 03 '25 14:12

pilcrow