Я хотел бы знать, есть ли способ выбрать случайно сгенерированное число от 100 до 500 вместе с запросом выбора.
Например: SELECT name, address, random_number FROM users
Мне не нужно хранить это число в db и использовать его только для отображения цели.
Я пробовал что-то вроде этого, но не получается ..
SELECT name, address, FLOOR(RAND() * 500) AS random_number FROM users
Надеюсь, кто-нибудь мне поможет. Спасибо
Ответы:
Это должно дать то, что вы хотите:
Как правило,
FLOOR(RAND() * (<max> - <min> + 1)) + <min>
генерирует число от<min
> до<max>
включительно.Обновить
Это полное заявление должно работать:
источник
round()
даст неравномерное распределение.SET @r=FLOOR(RAND() * 401) + 100
, тогдаSELECT @r
.RAND()
,UUID()
,NOW()
Являются индетерминисти- функции. Следует избегать записи вызовов таких функций в журнал корзины для репликации. Например.INSERT INTO t SET ID=UUID();
приведет к тому, что значенияID
полей будут разными на главном и подчиненном устройствах. Вместо этого его нужно записать какSET @uuid:=UUID();
, аINSERT INTO t SET ID=@uuid;
затем запустить их в одной транзакции. Это будет безопасно для репликации. Это немного не по теме этого вопроса. Это не значит, что в вашем ответе есть проблемы. :)As
RAND
производит число 0 <= v <1.0 (см. Документацию ), которое необходимо использовать,ROUND
чтобы убедиться, что вы можете получить верхнюю границу (500 в этом случае) и нижнюю границу (100 в этом случае)Итак, для производства необходимого ассортимента:
источник
В дополнение к этому ответу создайте такую функцию, как
и позвони как
SELECT myrandom(100,300);
Это дает вам случайное число от 100 до 300
источник
Вы можете создать случайное число, используя
FLOOR(RAND() * n) as randnum
(n - целое число), однако, если вам не нужно повторять одно и то же случайное число, вам придется несколько сохранить его во временной таблице. Так что вы можете проверить это с помощьюwhere randnum not in (select * from temptable)
...источник
они оба работают хорошо:
источник
Это правильная формула , чтобы найти целые числа от
i
до ,j
гдеi <= R <= j
источник
FLOOR(min+RAND()*(max-min+1))