具有while和If语句的MySQL更新表条目循环问题

时间:2018-04-24 11:57:41

标签: mysql if-statement while-loop

我有一个表,其后是属性teamId和roundId,另一个表名为teamRoundId,用于连接这两个属性。我的目标是用一个名为teamRoundId

的属性替换teamId / roundId连接

enter image description here

目前,teamRoundId属性填满了一些数字,因为我试图把它弄好。

我认为该陈述与我尝试的最接近:

drop procedure if exists j;
delimiter $$
CREATE PROCEDURE j()
BEGIN 
DECLARE v INT DEFAULT 1;
DECLARE c INT DEFAULT 0;
DECLARE d INT DEFAULT 1;

 WHILE v < 64 DO
    UPDATE `ssshortagerule`
    SET `teamRoundId` = v
    Where teamId = d AND roundId = c;
    IF c < 6 THEN
    SET c = c + 1;
    ELSE
    SET c = 0 AND d = d + 1;
    END IF;
    SET v = v + 1;
END WHILE;
END $$
delimiter ;
call j();

所以teamId 1和roundId 0应该是teamRoundID 1, teamId 1,roundId 1 - &gt; teamRoundId 2等到63。 我的陈述中缺少什么?

要说的是,teamRoundId 59到63是由上面的声明生成的。 2手动添加。

附加信息:有7个(0到6个)轮次和9个球队,但并非所有球队都有本表中的条目

1 个答案:

答案 0 :(得分:0)

使用SET命令在2个变量之间不能有AND语句:

drop procedure if exists j;
delimiter $$
CREATE PROCEDURE j()
BEGIN 
DECLARE v INT DEFAULT 1;
DECLARE c INT DEFAULT 0;
DECLARE d INT DEFAULT 1;

 WHILE v < 64 DO
    UPDATE `ssshortagerule`
    SET `teamRoundId` = v
    Where teamId = d AND roundId = c;
    IF c < 6 THEN
    SET c = c + 1;
    ELSE
    SET c = 0;
    SET d = d + 1;
    END IF;
    SET v = v + 1;
END WHILE;
END $$
delimiter ;
call j();