mysql - 使用 for 循环插入多个数据的 SQL 查询
问题描述
我的数据集
标签名称Users
unique_id uid
123487.1 1000
123488.1
123489.1
123490.1
如上所示,这是我现有的数据,我想添加uid
,所以我的数据应该如下所示。
unique_id uid
123487.1 1000
123488.1 1001
123489.1 1002
123490.1 1003
解决方案
您可以创建这样的过程:
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;
然后将根据您的要求更新这些值。
这是演示。
推荐阅读
- arrays - CUDA中多维数组的结构
- reactjs - 编辑按钮上的编辑行单击“react-bootstrap-table-next”
- angular - Angular Material Datepicker - 传递的日期不正确
- html - 为什么我的段落弹出窗口出现在我的 div 之外并带有“mousedown”事件?
- node.js - POST http://localhost:3000/login/aa/aa 404(未找到)
- laravel - 无法在 $media 对象 Laravel 上多次调用方法 getFrameFromSeconds()
- c - 检查标准输入是否有空格
- swift - Swift将Future与多个值结合起来?
- php - laravel 中的多条通知
- angular - 动态更改文档标题并返回