sql >> Database >  >> RDS >> Mysql

mysql unieke nummergeneratie

Hoewel het wat onhandig lijkt, is dit wat je kunt doen om het doel te bereiken:

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

Simpel gezegd, het genereert N willekeurige getallen, waarbij N het aantal tabelrijen is, filtert de rijen die al in de tabel staan ​​eruit en beperkt de resterende set tot één.

Het kan wat traag zijn op grote tafels. Om de zaken te versnellen, kunt u een weergave maken van deze unieke id's en deze gebruiken in plaats van een geneste select-instructie.

EDIT:aanhalingstekens verwijderd



  1. hoe alleen tijd en geen datum in de database op te slaan via sql-query

  2. Hoe kan ik een migratie uitvoeren in laravel 5.5?

  3. Kan een gedistribueerde transactie niet starten

  4. Hoe een CSV-bestand in PostgreSQL te importeren