我目前正在尝试使用表中的循环来更新行。
我有名为“id”和“visitor_id”的字段。 “id”列是自动递增的,但“visitor_id”不是。表中已有数据,两列如下所示。
'id' 'visitor_id'
1 0
2 0
3 0
4 0
5 0
所以我想要的是我希望这两列具有相同的值。
'id' 'visitor_id'
1 1
2 2
3 3
4 4
5 5
我尝试搜索如何循环和更新值,但仍然没有运气。这是我尝试的代码。
DELIMITER $$
DROP PROCEDURE IF EXISTS insert_loop $$
CREATE PROCEDURE insert_loop ()
BEGIN
DECLARE i int DEFAULT 1;
WHILE i <=30 DO
UPDATE test_db.visitor_visit SET visitor_id=i WHERE id=i;
SET i = i + 1;
END WHILE;
END $$
CALL insert_loop();
我会接受可能对我的情况有所帮助的任何其他方法。谢谢! :)
最佳答案
为了解决这个问题,你必须使用触发器(插入后),试试这个查询:
CREATE TRIGGER aa BEFORE INSERT ON ab FOR EACH ROW SET NEW.visitor_id = new.id
就在您的第一次插入时,设置“visitor_id = null”,然后将其设置为您想要的任何值,因为它将直接采用同一行中的“id”值。 希望有用。
关于mysql - mysql中的循环更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40755424/