Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wygeneruj listę nowych unikalnych liczb losowych w T-SQL

Możesz używać cte z wyliczonymi kodami, distinct i sprawdź, czy kod już istnieje w Twojej tabeli:

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

Więc distinct pomaga uniknąć kolizji między nowymi kodami a exists pomagają uniknąć kolizji z już istniejącymi kodami w [Codes] tabela i order by newid() pomaga uzyskać losowe wartości z nowych kodów



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przekształcanie parametru wielowartościowego w tabelę tymczasową w SQL Server Business Intelligence Development Studio

  2. Jak określić kolumnę, która ma być unikatowa w zakresie relacji w SQL Server 2008?

  3. Co to jest @@MAX_PRECISION w programie SQL Server?

  4. Korzystanie z procedur składowanych SQL Server z Pythona (pyodbc)

  5. SSRS — odpowiednik Group_Concat przy użyciu wyrażenia?