sql >> Databasteknik >  >> RDS >> Mysql

mysql unika nummergenerering

Även om det verkar något besvärligt, är detta vad som kan göras för att uppnå 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 uttryckt genererar den N slumptal, där N är antalet tabellrader, filtrerar bort de som redan finns i tabellen och begränsar den återstående uppsättningen till en.

Det kan vara något långsamt på stora bord. För att påskynda saker och ting kan du skapa en vy från dessa unika ID och använda den istället för kapslad select-sats.

EDIT:borttagna citat



  1. mysql2 pärla kompilerad för fel mysql-klientbibliotek

  2. Hur kan jag lista alla främmande nycklar som refererar till en given tabell i SQL Server?

  3. Ta bort poster från en postgresql-fjärrdatabas med hjälp av lokalt tillhandahållen lista

  4. SQL Server Error 7222:"Endast en SQL Server-leverantör är tillåten i denna instans"