【发布时间】:2019-04-03 16:09:25
【问题描述】:
我的作业是为 Kicker 锦标赛设置一张桌子。我必须编写一个 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 这种语言不使用 IF 子句,也不需要它们。它适用于 sets,而不是循环。解释你真正想要做什么,而不是你期望如何去做。你想要从 1 到 10 的 10 个不重复的数字吗?还是只有10个不应该重复? 1-10 随机顺序基本上是 1-10 洗牌
-
您好 Lukas,您能在表格中包含所需的结果吗?
-
您好,我想要 2 个号码。第一个应该是随机生成的(0-10),这意味着玩家一确实得分 X(随机数 0-10)目标。然后它应该检查随机数 X 是否为 10,如果是,则从 0-9 生成另一个随机数(因为 10 是最大目标计数)。如果数字不是 10,我希望语句将 10 输入到玩家 2 的进球数中。这至少可以理解吗?英语不是我的母语,我尽量用对我来说最好的方式来解释它。
标签: sql sql-server random sql-insert