MySQL更新带有While和If语句的表项循环问题

MySQL更新带有While和If语句的表项循环问题,mysql,if-statement,while-loop,Mysql,If Statement,While Loop,我有一个表,后面是属性teamId和roundId,还有一个表叫teamRoundId,用于连接这两个属性。我的目标是用一个名为teamRoundId的属性替换teamId/roundId连接 目前,属性teamRoundId中填充了一些数字,因为我正试图将其设置正确 我认为最接近我尝试的说法是: drop procedure if exists j; delimiter $$ CREATE PROCEDURE j() BEGIN DECLARE v INT DEFAULT 1; DECLA

我有一个表,后面是属性teamId和roundId,还有一个表叫teamRoundId,用于连接这两个属性。我的目标是用一个名为teamRoundId的属性替换teamId/roundId连接

目前,属性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();
drop程序(如果存在);
分隔符$$
创建过程j()
开始
声明v INT默认值为1;
声明c INT默认值为0;
声明d INT默认值为1;
而v<64
更新'ssshortagerule`
设置'teamRoundId`=v
其中teamId=d,roundId=c;
如果c<6,则
设置c=c+1;
其他的
设置c=0和d=d+1;
如果结束;
设置v=v+1;
结束时;
结束$$
定界符;
调用j();
所以teamId 1和roundId 0应该是teamRoundID 1, teamId 1、roundId 1->teamRoundId 2等,直到63。 我在陈述中遗漏了什么

也就是说,teamRoundId 59到63是由上述语句生成的。2是手动添加的


附加信息:共有7(0到6)轮和9个团队,但并非所有团队在此表中都有条目

使用SET命令,两个变量之间不能有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();
drop程序(如果存在);
分隔符$$
创建过程j()
开始
声明v INT默认值为1;
声明c INT默认值为0;
声明d INT默认值为1;
而v<64
更新'ssshortagerule`
设置'teamRoundId`=v
其中teamId=d,roundId=c;
如果c<6,则
设置c=c+1;
其他的
设置c=0;
设置d=d+1;
如果结束;
设置v=v+1;
结束时;
结束$$
定界符;
调用j();