sql >> Databáze >  >> RDS >> Mysql

generování jedinečných čísel mysql

I když se to zdá poněkud trapné, k dosažení cíle lze udělat toto:

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

Jednoduše řečeno, generuje N náhodných čísel, kde N je počet řádků tabulky, odfiltruje ty, které se již v tabulce nacházejí, a omezí zbývající množinu na jednu.

Na velkých stolech by to mohlo být poněkud pomalé. Chcete-li věci urychlit, můžete vytvořit pohled z těchto jedinečných ID a použít jej místo vnořeného příkazu select.

EDIT:odstraněny uvozovky



  1. Jak vyřeším přetečení zásobníku vláken mysql?

  2. Jak opravit stavový kód serveru:302 Found by SQL Inject Me Firefox Addon

  3. Při použití GETDATE() na mnoha místech, je lepší použít proměnnou?

  4. Proč nemohu provést agregační funkci na výrazu obsahujícím agregaci, ale mohu tak učinit vytvořením nového příkazu select kolem něj?