我在存儲過程中使用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我已經完成了。 –