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

Generer liste over nye unikke tilfældige tal i T-SQL

Du kan bruge cte med beregnede koder, distinct og kontroller, om koden allerede findes i din tabel:

;with cte_stream as (
    select
        floor(cast(crypt_gen_random(4) as bigint) / 4294967296 * ((@max - @min) + 1)) + @min as Code
    from sys.all_objects as s1 
        cross join sys.all_objects as s2;
)
insert into [Codes]
select distinct top (@n) s.Code
from cte_stream as s
where not exists (select * from [Codes] as c where c.Code = s.Code)

distinct hjælper dig med at undgå kollision mellem nye koder og exists hjælpe dig med at undgå kollisioner med allerede eksisterende koder i [Codes] tabel, og order by newid() hjælper dig med at få tilfældige værdier fra nye koder



  1. Hvordan indstilles startværdi og automatisk stigning i MySQL?

  2. Fejl 1130 i mysql

  3. Udarbejd primær nøglefejl på postgresql, heroku, Rails 4

  4. Oracle XMLQuery ødelægger navneområdet