Pri*_*ton 2 sql t-sql sql-server sql-server-2008
我想我已经破解了生成随机数的方法.但是,SQL服务器中有效的循环方式是什么?我有以下SQL:
DECLARE @Random1 INT;
DECLARE @Random2 INT;
DECLARE @Random3 INT;
DECLARE @Random4 INT;
DECLARE @Random5 INT;
DECLARE @Random6 INT;
DECLARE @Upper INT;
DECLARE @Lower INT;
---- This will create a random number between 1 and 49
SET @Lower = 1 ---- The lowest random number
SET @Upper = 49 ---- The highest random number
SELECT @Random1 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random2 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random3 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random4 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random5 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Random6 = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
--SELECT @Random;
INSERT INTO [lotto].[dbo].[CustomerSelections]
([draw_date]
,[val1]
,[val2]
,[val3]
,[val4]
,[val5]
,[val6])
VALUES
(
'2013-07-05'
,@Random1
,@Random2
,@Random3
,@Random4
,@Random5
,@Random6
)
Run Code Online (Sandbox Code Playgroud)
让SQL Server运行此SQL 100,000次的最佳方法是什么?
Mar*_*ith 12
在没有循环的一个语句中完成所有操作将是最有效的方法.
INSERT INTO [lotto].[dbo].[CustomerSelections]
([draw_date]
,[val1]
,[val2]
,[val3]
,[val4]
,[val5]
,[val6])
SELECT TOP (100000 )
'2013-07-05',
1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
1 + ABS(CRYPT_GEN_RANDOM(8) % 49),
1 + ABS(CRYPT_GEN_RANDOM(8) % 49)
FROM master..spt_values v1,
master..spt_values v2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
368 次 |
| 最近记录: |