создание случайного числа с помощью MYSQL


Я хотел бы знать, есть ли способ выбрать случайно сгенерированное число от 100 до 500 вместе с запросом select.

например: SELECT name, address, random_number FROM users

мне не нужно хранить это число в БД и использовать его только для отображения цели.

Я пробовал что-то вроде этого, но он не может работать..

SELECT name, address, FLOOR(RAND() * 500) AS random_number FROM users

надеюсь кто-то поможет мне. Спасибо

5 84

5 ответов:

Это должно дать то, что вы хотите:

FLOOR(RAND() * 401) + 100

В общем, FLOOR(RAND() * (<max> - <min> + 1)) + <min> генерирует число между <min> и <max> включительно.

обновление

это полное заявление должно работать:

SELECT name, address, FLOOR(RAND() * 401) + 100 AS `random_number` 
FROM users

как RAND производит число 0 документация) нужно использовать ROUND чтобы убедиться, что вы можете получить верхнюю границу (500 в этом случае) и нижнюю границу (100 в этом случае)

таким образом, чтобы произвести диапазон вам нужно:

SELECT name, address, ROUND(100.0 + 400.0 * RAND()) AS random_number
FROM users

В дополнение к этому ответу, создать функцию, как

CREATE FUNCTION myrandom(
    pmin INTEGER,
    pmax INTEGER
)
RETURNS INTEGER(11)
DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
BEGIN
  RETURN floor(pmin+RAND()*(pmax-pmin));
END; 

и как

SELECT myrandom(100,300);

это дает вам случайное число от 100 до 300

вы можете создать случайное число с помощью FLOOR(RAND() * n) as randnum (n-целое число), однако если вам не нужно повторять одно и то же случайное число, вам придется несколько хранить во временной таблице. Так что вы можете проверить его с where randnum not in (select * from temptable)...

это правильная формула для нахождения чисел из i to j здесь i <= R <= j

FLOOR(min+RAND()*(max-min))