有没有一种方法可以在现有表中插入随机数?

时间:2019-04-03 16:09:26

标签: sql sql-server random sql-insert

我有作业来为踢球比赛设置桌子。我必须写一个INSERT语句,在其中我将用随机数填充玩家1和玩家2的目标。 所以多数民众赞成在或多或少清楚。我是这样的:

DECLARE @MAX_VALUE INT = 10, @MIN_VALUE INT = 0, @RANDOM_NUMBER INT;
SELECT @Random_Number = FLOOR((@Max_Value - @Min_Value + 1)
* RAND() + @Min_Value)

DECLARE @RANDOM_NUMBER2 INT;
SELECT @Random_Number2 = FLOOR((@Max_Value - @Min_Value + 1)
* RAND() + @Min_Value)


INSERT INTO dbo.SpielTabelle
VALUES(4,1,3,@RANDOM_NUMBER,@RANDOM_NUMBER2)

现在的问题是,如果一个人有10个(这就是为什么最大值为10)该人赢了,我不希望第二个数字也为10。我如何在其中包括if子句?

这是针对SQL Server 2017的,我尝试包括if子句,但没有起作用。总是语法错误。

DECLARE @MAX_VALUE INT = 10, @MIN_VALUE INT = 0, @RANDOM_NUMBER INT;
SELECT @Random_Number = FLOOR((@Max_Value - @Min_Value + 1)
* RAND() + @Min_Value)

DECLARE @RANDOM_NUMBER2 INT;
SELECT @Random_Number2 = FLOOR((@Max_Value - @Min_Value + 1)
* RAND() + @Min_Value)


INSERT INTO dbo.SpielTabelle
VALUES(4,1,3,@RANDOM_NUMBER,@RANDOM_NUMBER2)

我希望当最终决赛时,我可以输入新的游戏ID,然后它会自动填充其他所有内容,每个游戏都有1个人的目标是10个进球,而1个人的目标是更少。

1 个答案:

答案 0 :(得分:0)

您可以放入一个WHILE循环以测试两个值均为10,然后计算新值,直到它们都不为10:

DECLARE @MAX_VALUE INT = 10, @MIN_VALUE INT = 0, @RANDOM_NUMBER INT;
SELECT @Random_Number = FLOOR((@Max_Value - @Min_Value + 1)
* RAND() + @Min_Value)

DECLARE @RANDOM_NUMBER2 INT;
SELECT @Random_Number2 = FLOOR((@Max_Value - @Min_Value + 1)
* RAND() + @Min_Value)

WHILE @RANDOM_NUMBER=10 and @RANDOM_NUMBER2=10
BEGIN
SET @Random_Number = FLOOR((@Max_Value - @Min_Value + 1)
* RAND() + @Min_Value)

SET @Random_Number2 = FLOOR((@Max_Value - @Min_Value + 1)
* RAND() + @Min_Value)
END

select 4,1,3,@RANDOM_NUMBER,@RANDOM_NUMBER2