有没有办法将随机数插入已存在的表中?

问题描述 投票:0回答:1

我有家庭作业为踢球锦标赛设置表。我必须写一个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个人少了。

sql sql-server random sql-insert
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.