Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

geração de número exclusivo mysql


Embora pareça um pouco estranho, isso é o que pode ser feito para atingir o objetivo:
SELECT FLOOR(10000 + RAND() * 89999) AS random_number
FROM table
WHERE random_number NOT IN (SELECT unique_id FROM table)
LIMIT 1

Simplificando, ele gera N números aleatórios, onde N é a contagem de linhas da tabela, filtra os já presentes na tabela e limita o conjunto restante a um.

Pode ser um pouco lento em mesas grandes. Para acelerar as coisas, você pode criar uma visualização a partir desses ids exclusivos e usá-la em vez da instrução select aninhada.

EDIT:citações removidas