使用for循环插入多个数据的SQL查询

问题描述 投票:0回答:1

我的数据集表格名称用户

unique_id   uid

123487.1    1000
123488.1    
123489.1    
123490.1    

如上图所示,这是我的exixing数据,我想添加uid,所以我的数据应如下所示显示

unique_id   uid

123487.1    1000
123488.1    1001
123489.1    1002
123490.1    1003
mysql sql
1个回答
0
投票

您可以创建这样的过程:

CREATE PROCEDURE uid_update()

BEGIN

 DECLARE Done_c INT;
 DECLARE v_min_id INT;
 declare number_plus int;
 declare v_cur int;

 DECLARE curs CURSOR FOR 
 select ROW_NUMBER() OVER (order by unique_id) rn  
 from testTable
 where uid is null;

 DECLARE CONTINUE HANDLER FOR NOT FOUND SET Done_c = 1;

 SELECT max(uid) INTO number_plus FROM testTable;

 OPEN curs;

  SET Done_c = 0;
  REPEAT
       FETCH curs INTO v_cur;

       select min(unique_id) into v_min_id 
       from testTable 
       where uid is null;

       update testTable
       set uid = number_plus + v_cur
       where uid is null
       and unique_id = v_min_id ;

       commit;

       UNTIL Done_c END REPEAT;

  CLOSE curs;

END

然后像这样调用该过程:

call uid_update;

然后将根据您的要求更新值。

这里是DEMO

© www.soinside.com 2019 - 2024. All rights reserved.