【问题标题】:MySQL Update Table Entries with While and If Statements Loop issue带有 While 和 If 语句循环问题的 MySQL 更新表条目
【发布时间】:2018-10-04 16:18:56
【问题描述】:

我有一个带有属性 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();

所以teamId 1 和roundId 0 应该是teamRoundID 1, teamId 1,roundId 1 -> teamRoundId 2 依此类推,直到 63。 我的声明中缺少什么?

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

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

【问题讨论】:

    标签: mysql if-statement while-loop


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2012-12-02
      • 2019-08-21
      • 1970-01-01
      • 2018-05-27
      • 2013-06-09
      • 2016-01-12
      • 2021-03-18
      • 1970-01-01
      相关资源
      最近更新 更多