sql >> Databáze >  >> RDS >> Sqlserver

Generování seznamu nových jedinečných náhodných čísel v T-SQL

Cte můžete použít s vypočítanými kódy, distinct a zkontrolujte, zda kód již ve vaší tabulce existuje:

;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)

Takže distinct vám pomůže vyhnout se kolizi mezi novými kódy a exists vám pomůže vyhnout se kolizím s již existujícími kódy v [Codes] tabulka a order by newid() vám pomůže získat náhodné hodnoty z nových kódů



  1. Jak výhradně zamknout řádek, který brání provozu CRUD

  2. Názvy sloupců SQL a jejich porovnání se záznamy řádků v jiné tabulce v PostgreSQL

  3. Jak najít cestu pg_config

  4. apache mysql - pakety mimo provoz na 3306