sql >> Database teknologi >  >> RDS >> Sqlserver

Generer unikke tilfældige tal ved hjælp af SQL

Jeg gætter på, at du kunne gøre sådan noget meget enklere og meget nemmere

DECLARE @Upper INT;
DECLARE @Lower INT;
SET @Lower = 1;     /* -- The lowest random number */
SET @Upper = 49;    /* -- The highest random number */
    
    
SELECT @Lower + CONVERT(INT, (@[email protected]+1)*RAND());
 

For at få et tilfældigt tal uden gentagelse, vil dette gøre jobbet

WITH CTE AS ( SELECT randomNumber, COUNT(1) countOfRandomNumber FROM ( SELECT ABS(CAST(NEWID() AS binary(6)) %49) + 1 randomNumber FROM sysobjects ) sample GROUP BY randomNumber ) SELECT TOP 5 randomNumber FROM CTE ORDER BY newid()

For at indstille den højeste grænse kan du erstatte 49 med dit højeste grænsetal.



  1. MySQL konverterer mine tidsstempelværdier til 0000-00-00

  2. Fejlfinding af CPU-ydeevne på VMware

  3. Hvordan optimerer man denne MySQL-forespørgsel? Millioner af rækker

  4. Debugging viser ikke den aktuelle version af den lagrede procedure