sql >> Databáze >  >> RDS >> Sqlserver

Generujte jedinečná náhodná čísla pomocí SQL

Myslím, že byste něco takového mohli udělat mnohem jednodušší a mnohem jednodušší

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

Pro získání náhodného čísla bez opakování to udělá práci

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

Chcete-li nastavit nejvyšší limit, můžete nahradit 49 číslem nejvyššího limitu.



  1. Vyberte N-tý řádek z tabulky v Oracle

  2. Součtový dotaz Mysql vrací nesprávný výsledek při použití více spojení

  3. Upozornění na Python a SQLite

  4. dayname(curdate()) NEFUNGUJE v codeigniter php