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

SQLを使用して一意の乱数を生成する

    このようなことをもっと簡単に、もっと簡単にできると思います

    DECLARE @Upper INT;
    DECLARE @Lower INT;
    SET @Lower = 1;     /* -- The lowest random number */
    SET @Upper = 49;    /* -- The highest random number */
        
        
    SELECT @Lower + CONVERT(INT, (@[email protected]+1)*RAND());
    

    繰り返しなしで乱数を取得するために、これは仕事をします

    WITH CTE 
    AS
    (
        SELECT  randomNumber, COUNT(1) countOfRandomNumber
        FROM (
        SELECT ABS(CAST(NEWID() AS binary(6)) %49) + 1 randomNumber
        FROM sysobjects
        ) sample
        GROUP BY randomNumber
    )
    SELECT TOP 5 randomNumber
    FROM CTE
    ORDER BY newid() 
    

    上限を設定するには、49を上限番号に置き換えることができます。



    1. 必要なガイダンス:フロントエンドのユーザーがフィールドを動的に選択するためのバックエンドSQLロジック

    2. MySql:このクエリを高速化します...方法はありますか?

    3. 多くのデータを1つのデータとしてマージ

    4. Javaからテーブル値パラメータを使用してストアドプロシージャを呼び出す