Gostaria de saber se existe uma maneira de selecionar um número gerado aleatoriamente entre 100 e 500 junto com uma consulta selecionada.
Por exemplo: SELECT name, address, random_number FROM users
Eu não tenho que armazenar esse número no banco de dados e apenas usá-lo para exibir o propósito.
Eu tentei algo assim, mas não consigo funcionar ..
SELECT name, address, FLOOR(RAND() * 500) AS random_number FROM users
Espero que alguém me ajude. Obrigado
Respostas:
Isso deve dar o que você deseja:
Genericamente,
FLOOR(RAND() * (<max> - <min> + 1)) + <min>
gera um número entre<min
> e<max>
inclusivo.Atualizar
Esta declaração completa deve funcionar:
fonte
round()
que dará uma distribuição não uniforme.SET @r=FLOOR(RAND() * 401) + 100
, entãoSELECT @r
.RAND()
,UUID()
,NOW()
São funções indeterministas. A chamada de tais funções deve ser evitada de ser gravada no log bin para replicação. Por exemplo.INSERT INTO t SET ID=UUID();
fará com que o valor dosID
campos seja diferente no mestre e nos escravos. Em vez disso, ele precisa ser escrito comoSET @uuid:=UUID();
eINSERT INTO t SET ID=@uuid;
, em seguida, executá-los em uma única transação. Isso será seguro para replicação. Este é um assunto um pouco fora do assunto para esta questão. Não diz que sua resposta tem algum problema. :)As
RAND
produz um número 0 <= v <1,0 (consulte a documentação ) que você precisa usarROUND
para garantir que pode obter o limite superior (500 neste caso) e o limite inferior (100 neste caso)Portanto, para produzir a variedade de que você precisa:
fonte
Além desta resposta, crie uma função como
e ligue como
SELECT myrandom(100,300);
Isso dá a você um número aleatório entre 100 e 300
fonte
Você pode criar um número aleatório usando
FLOOR(RAND() * n) as randnum
(n é um inteiro), entretanto, se você não precisa que o mesmo número aleatório seja repetido, você terá que armazená-lo em uma tabela temporária. Então você pode verificar comwhere randnum not in (select * from temptable)
...fonte
ambos estão funcionando bem:
fonte
Esta é a fórmula correta para encontrar inteiros de
i
paraj
ondei <= R <= j
fonte
FLOOR(min+RAND()*(max-min+1))