MySql 循环执行语句,循环执行update

今天接到个奇葩的需求,给一个表的某个字段随机更新一个值,还马上就要结果,写代码循环遍历更新肯定是来不及了,只能用SQL循环来搞搞了,当然也是扒别人的代码。

具体代码

drop procedure if exists temp_data;/*取一个系统中绝对不会用到的存储过程名称*/
/*创建临时存储过程*/
create procedure temp_data()
BEGIN
declare isDone int default 0; /*判断是否还有记录*/
declare tempId char(36); /*每条记录循环时的临时ID*/

declare folderIds cursor for select id from cms_document_info where like_quantity = 0 or  like_quantity is null;/*取出来所有需要循环的数据*/
declare continue handler for not FOUND set isDone = 1;/*如果不存在就设置为1,即为true*/
open folderIds; /*OPEN*/

REPEAT /*开始循环数据*/
fetch folderIds into tempId;
if not isDone THEN
update cms_document_info set like_quantity=(SELECT FLOOR( 100 + RAND() * (1000 - 100))) WHERE id = tempId;
end if;
until isDone end repeat;
close folderIds; /*CLOSE,对应上面的open folderIds;*/
END;
call temp_data();/*调用下这个临时的存储过程*/
drop procedure temp_data; /*使用完毕后要删除垃圾*/

完事了。其他类似的需求也可以用存储过程来搞搞。

# code   mysql   sql  

评论

企鹅群:39438021

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×