Mysql
 sql >> Base de données >  >> RDS >> Mysql

génération de numéro unique mysql

Bien que cela semble quelque peu gênant, voici ce qui peut être fait pour atteindre l'objectif :

SELECT FLOOR(10000 + RAND() * 89999) AS random_number
FROM table
WHERE random_number NOT IN (SELECT unique_id FROM table)
LIMIT 1

En termes simples, il génère N nombres aléatoires, où N est le nombre de lignes du tableau, filtre ceux déjà présents dans le tableau et limite l'ensemble restant à un.

Cela pourrait être un peu lent sur les grandes tables. Pour accélérer les choses, vous pouvez créer une vue à partir de ces identifiants uniques et l'utiliser à la place de l'instruction de sélection imbriquée.

EDIT :guillemets supprimés