Есть ли способ вставить случайное число в уже существующую таблицу? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть домашнее задание, чтобы настроить стол для турнира по кикеру. Я должен написать заявление 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)

Я ожидаю, что по окончании я смогу просто ввести новый идентификатор игры, а затем он автоматически заполнит все остальное, и в каждой игре будет 1 человек с 10 голами и 1 с меньшим количеством.

1 Ответ

0 голосов
/ 03 апреля 2019

Вы можете вставить небольшой цикл 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
...