2016-11-23 340 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」值。 希望是有用的。