在mysql中循环更新语句

时间:2016-11-23 03:17:44

标签: mysql database

我目前正在尝试使用表中的循环更新行。

我的字段名为' id'和' visitor_id'。 ' ID'列是自动增量,但访客_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();

我会接受任何可能有助于我的情况的其他方法。谢谢! :)

2 个答案:

答案 0 :(得分:3)

您必须使用触发器(插入后)才能解决此问题,请尝试以下查询:

CREATE TRIGGER aa BEFORE INSERT ON ab FOR EACH ROW SET NEW.visitor_id = new.id

在第一次插入时,设置'visitor_id = null',然后将其设置为您想要的任何值,因为它将直接将'id'值放在同一行中。 希望是有用的。

答案 1 :(得分:1)

简单的更新查询可以做同样的事情。

UPDATE test_db.visitor_visit SET visitor_id=id 
WHERE id BETWEEN 1 and 30