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

mysql - 带While和If语句循环问题的MySQL更新表条目-LMLPHP

目前,属性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-> teamRoundId 2,依此类推,直到63。
我的声明中缺少什么?

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

附加信息:有7(0至6)回合和9支球队,但并非所有球员都在此表中有条目

最佳答案

使用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();

10-04 20:19