我目前正在尝试使用表中的循环来更新行。
我有两个名为'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();我会接受任何其他可能对我的情况有帮助的方法。谢谢!:)
发布于 2016-11-23 15:57:50
您必须使用触发器(在insert之后)才能解决此问题,请尝试以下查询:
CREATE TRIGGER aa BEFORE INSERT ON ab FOR EACH ROW SET NEW.visitor_id = new.id只需在第一次插入时,设置'visitor_id = null‘,然后将其设置为您想要的任何值,因为它将直接接受同一行中的'id’值。希望是有用的。
发布于 2016-11-23 11:20:25
一个简单的update查询也可以做同样的事情。
UPDATE test_db.visitor_visit SET visitor_id=id
WHERE id BETWEEN 1 and 30https://stackoverflow.com/questions/40755424
复制相似问题