【问题标题】:Is there a way to Insert a Random Number into a already existing Table?有没有办法将随机数插入到已经存在的表中?
【发布时间】: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


【解决方案1】:

您可以放入一个小 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

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 2022-01-05
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多