sql >> データベース >  >> RDS >> Sqlserver

T-SQL で新しい一意の乱数のリストを生成する

    計算されたコード、distinct で cte を使用できます コードがテーブルに既に存在するかどうかを確認します:

    ;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. Microsoft SQL Server 2008 の主キーの意味

    2. AndroidSQLiteの挿入または更新

    3. MySQL文字列の最後のインデックス

    4. MySQL:内部結合と場所