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

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

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

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

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

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

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

6 ответов

Решение

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

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 <= v < 1.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

Они оба работают хорошо:

select round(<maxNumber>*rand())

FLOOR(RAND() * (<max> - <min> + 1)) + <min> // generates a number
between <min> and <max> inclusive.

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

Это правильная формула, чтобы найти целые числа из i в j где i <= R <= j

FLOOR(min+RAND()*(max-min))
Другие вопросы по тегам