mysql - mysql中的循环更新语句

标签 mysql database

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

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

相关文章:

php - 将表格单元格值放入 PHP post 中

php - 如何将wordpress mysql md5用户密码字段传输到另一个mysql表中

php - 如何使用 Yii 中带有 ID 列表的字段中的 ID 获取数据库表中的所有行?

sql - Oracle 跨行散列数据

php - 单个用户的更新数据库/所有用户的数据库更新

mongodb - 无法连接到 MongoDB/奇怪

mysql - 合并多个表生成 View

php - 获取 UL 标签的内容以发布到数据库

php - php 脚本安全中的 mysqldump

php - MySQL/PHP foreach 仍然只在数据库中显示第一个