最近写的一个Mysql存储过程

  
       停了半天的电,看了半天的<老子>,然后......
        
       (思绪飞弛.....)

       发现像排行榜更新之类的应用,还是用存储过程舒服,一个叫uch_zcount的表里有zcid,total,heronum 三个字段,现在要求按total从大到小把排行次序写到heronum字段中,zcid为自增字段........写了如下的存储过程:

复制代码
DELIMITER $$;

DROP PROCEDURE IF EXISTS `zyf`.`getcount`$$

CREATE DEFINER=`root`@`%PROCEDURE `getcount`()
BEGIN
set @ok=1;
set @i =1;
set @zcid=0;
select count(*into @ok from uch_zcount;

CREATE TEMPORARY TABLE tmp_tablezz (    
rowid 
bigint auto_increment primary key
zcbigint);

insert into tmp_tablezz (zcid) select zcid from uch_zcount order by total desc;
    
while @i <@ok+1 do 
    
update uch_zcount set heronum = @i where zcid= (select zcid from tmp_tablezz where rowid =@i);

    
set @i=@i+1;
    
end while;

drop table tmp_tablezz;
END$$

DELIMITER ;$$
复制代码

        肯定有更好的方法......... MYSQL还是不熟地...
posted @   玉米疯收  阅读(655)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示