Создание случайного числа с использованием MYSQL
Я хотел бы знать, есть ли способ выбрать произвольно сгенерированное число между 100 и 500 вместе с запросом select.
Например: SELECT name, address, random_number FROM users
Мне не нужно хранить это число в db и использовать его для отображения цели.
Я попробовал что-то вроде этого, но он не может работать.
SELECT name, address, FLOOR(RAND() * 500) AS random_number FROM users
Надеюсь, что кто-то поможет мне.
Спасибо вам
Ответы
Ответ 1
Это должно дать то, что вы хотите:
FLOOR(RAND() * 401) + 100
Как правило, FLOOR(RAND() * (<max> - <min> + 1)) + <min>
генерирует число между <min
> и <max>
включительно.
Обновление
Эта полная инструкция должна работать:
SELECT name, address, FLOOR(RAND() * 401) + 100 AS `random_number`
FROM users
Ответ 2
Как RAND
выдает число 0 <= v < 1.0 (см. документация) вам нужно использовать ROUND
, чтобы вы могли получить верхнюю границу (в этом случае 500) и нижнюю границу (100 в этом случае)
Итак, чтобы создать нужный диапазон:
SELECT name, address, ROUND(100.0 + 400.0 * RAND()) AS random_number
FROM users
Ответ 3
Вы можете создать случайное число, используя FLOOR(RAND() * n) as randnum
(n - целое число), однако, если вам не нужно повторять одно и то же случайное число, вам придется несколько хранить в таблице temp. Таким образом, вы можете проверить его с помощью where randnum not in (select * from temptable)
...
Ответ 4
Дополнительно к этому ответу создайте функцию типа
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
Ответ 5
Это правильная формула для нахождения целых чисел от i
до j
, где i <= R <= j
FLOOR(min+RAND()*(max-min))