我在存储过程中使用while循环来更新表格的每一行,但更新值对于所有行都保持不变。例如,在我的表格中,生成的数字是2266对于所有行而不是唯一的数字。用随机数更新表格行失败
我的存储过程是这样的
DELIMITER ;;
CREATE PROCEDURE lesrows()
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
DECLARE lesrand INT DEFAULT 0;
SELECT COUNT(*) FROM students INTO n;
select(FLOOR(2000 + RAND() * (3000 - 2000))) into lesrand;
SET i=0;
WHILE i<n DO
UPDATE students set student_number= lesrand;
SET i = i + 1;
END WHILE;
End;
;;
call lesrows();
为什么将所有行,而不是每一行的唯一号码一个常数?
while语句在每次迭代中设置整个表的student_number为lesrand。你需要每个迭代的新随机数(循环内),并且你想用你的变量i使用WHERE逐个选择学生。 –
我想每个迭代都有一个新的随机数。 –
@danihp我已经完成了。 –