Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Генерирайте списък с нови уникални произволни числа в T-SQL

Можете да използвате cte с изчислени кодове, distinct и проверете дали кодът вече съществува във вашата таблица:

;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 ви помага да избегнете сблъсък между нови кодове и exists ви помага да избегнете сблъсъци с вече съществуващи кодове в [Codes] таблица и order by newid() ви помага да получите произволни стойности от нови кодове



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да дам прекъсване на страницата в SSRS

  2. 6 функции за получаване на ден, месец и година от дата в SQL Server

  3. Концепции за проектиране на база данни със SQL Server Management Studio (SSMS) Част 1

  4. Как да получите стойност на квадратчето за отметка от gridview, когато квадратчето за отметка OnCheckedChanged

  5. CTE, за да получите всички деца (потомци) на родител