sql >> Database teknologi >  >> RDS >> Mysql

mysql unikke nummergenerering

Selvom det virker noget akavet, er dette, hvad der kan gøres for at nå målet:

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

Enkelt sagt genererer den N tilfældige tal, hvor N er antallet af tabelrækker, filtrerer dem fra, der allerede er til stede i tabellen, og begrænser det resterende sæt til én.

Det kunne være noget langsomt på store borde. For at fremskynde tingene kan du oprette en visning ud fra disse unikke id'er og bruge den i stedet for indlejret select-sætning.

EDIT:fjernede citater



  1. Validering af dine PostgreSQL-sikkerhedskopier på Docker

  2. Forbedrer Foreign Key forespørgselsydeevne?

  3. handling ikke tilladt, når objektet er lukket, når der køres mere avanceret forespørgsel

  4. Magento install klager over manglende InnoDB, når den er tilgængelig