Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tạo danh sách các số ngẫu nhiên duy nhất mới trong T-SQL

Bạn có thể sử dụng cte với các mã được tính toán, distinct và kiểm tra xem Mã đã tồn tại trong bảng của bạn chưa:

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

Vì vậy, distinct giúp bạn tránh va chạm giữa các mã mới và exists giúp bạn tránh va chạm với các mã hiện có trong [Codes] bảng và order by newid() giúp bạn nhận các giá trị ngẫu nhiên từ các mã mới



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bàn vận chuyển

  2. Truy vấn select khác biệt * đắt như thế nào

  3. Các tùy chọn ANSI tốt nhất khi tạo cơ sở dữ liệu mới

  4. Chuyển đổi kết quả dọc thành chế độ ngang (T-SQL)

  5. Làm cách nào để lấy số Tiếp theo có sẵn từ Máy chủ SQL? (Không phải cột Danh tính)