sql >> Databasteknik >  >> RDS >> Sqlserver

Skapa en lista med nya unika slumptal i T-SQL

Du kan använda cte med beräknade koder, distinct och kontrollera om koden redan finns i din tabell:

;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 att undvika kollision mellan nya koder och exists hjälpa dig att undvika kollisioner med redan befintliga koder i [Codes] tabell och order by newid() hjälper dig att få slumpmässiga värden från nya koder



  1. Om inte existerar misslyckas på SQL CE

  2. MySQL återställningsfråga

  3. "Måste deklarera den skalära variabeln"-felet när en tabellvärderad parameter skickas till en parametrerad SQL-sats

  4. Vilka är de respektive fördelarna/begränsningarna med Amazon RDS vs. EC2 med MySQL?