SQL 随机生成N列不重复数

CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;

INSERT INTO Nums VALUES(1);
WHILE @rc * 2 <= @max
BEGIN
  INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
  SET @rc = @rc * 2;
END

INSERT INTO dbo.Nums
  SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;
GO


select top 1000 * 
FROM Nums
ORDER BY RAND()*CHECKSUM(NEWID()) 

 

 

 

 

CHECKSUM(NEWID())  数据范围 为 -2147483648~2147483647

 

 

RAND()

方法1的数字范围:0至N-1之间,如cast( floor(rand()*100) as int)就会生成0至99之间任一整数 

方法2的数字范围:1至N之间,如cast(ceiling(rand() * 100) as int)就会生成1至100之间任一整数

  

原文地址:https://www.cnblogs.com/BinBinGo/p/2541534.html