You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL使用循环更新表列利率测试数据时所有行值相同问题求助

问题成因
  • UPDATE语句缺少WHERE过滤条件:不带条件的UPDATE会对全表所有行生效,每次循环都会把整张表的mInterest字段覆盖为当前的i值,循环结束后所有行都会保留最后一次循环的i值(即3.0),所以看起来所有行都是相同值。
  • 原代码只有更新逻辑没有数据插入逻辑:你创建完mtgPayment表后没有插入任何初始行,UPDATE操作不会生成新数据,最终要么是空表,要么是原有已存在的所有行被统一覆盖为相同利率。
修复方案

如果你的预期是生成3条测试数据,分别对应2.0、2.5、3.0三个利率值,只需要把存储过程里的UPDATE语句改为INSERT语句即可,修改后的完整代码如下:

CREATE TABLE  mtgPayment
  (lengthMonths DECIMAL(4,0),
  mInterest DECIMAL(8,6),
  loanAmt DECIMAL(10,2));

DELIMITER $$
CREATE PROCEDURE test_data()
BEGIN
  DECLARE i DECIMAL(8,6) DEFAULT 2.0;

  WHILE i < 3.5 DO
    -- 改为插入语句,可按需调整lengthMonths、loanAmt的测试值
    INSERT INTO mtgpayment(mInterest, lengthMonths, loanAmt) VALUES (i, 36, 100000);
    SET i = i + 0.5;
  END WHILE;
END$$
DELIMITER ;

CALL test_data();

SELECT * FROM mtgpayment;

如果你已经提前在表中插入了3条初始行,需要给不同行更新不同的利率,只需要在UPDATE语句里加入行匹配的WHERE条件,用主键、行号等字段和每次循环的i值做对应即可。

内容的提问来源于stack exchange,提问作者MTDayton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:18:03