Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Generuj unikalne liczby losowe za pomocą SQL

Myślę, że możesz zrobić coś takiego o wiele prostszego i łatwiejszego

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

Aby uzyskać losową liczbę bez powtórzeń, to załatwi sprawę

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

Aby ustawić najwyższy limit, możesz zastąpić 49 numerem najwyższego limitu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między sys.objects, sys.system_objects i sys.all_objects w programie SQL Server

  2. Utwórz kopię zapasową bazy danych w SQL Server 2017

  3. Jak wybrać wiersz zmiennej w programie SQL Server?

  4. Sql Server 2008 od wiersza do kolumny

  5. połączenia kodeignitera i odbc