2016-11-23 69 views
0

我当前正在尝试使用表中的循环更新行。mysql中的循环更新语句

我有名为'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 

我试图寻找关于如何循环和更新的价值,但仍然没有luck.This是我尝试的代码。

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(); 

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

回答

1

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

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

Omg我不敢相信我没有想过这个。我从现在开始真的需要有足够的睡眠。谢谢! – etzzz

+0

不用客气。很高兴得到了帮助 – e4c5

0

你必须使用触发器(插入后)为了解决这个问题,尝试此查询:

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

只是在你第一次插入,设置“visitor_id = NULL”,然后将其设置为您希望的任何值,因为它会直接在同一行中使用“id”值。 希望是有用的。