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

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

最近写的一个Mysql存储过程DELIMITER $$;
最近写的一个Mysql存储过程
最近写的一个Mysql存储过程
DROP PROCEDURE IF EXISTS `zyf`.`getcount`$$
最近写的一个Mysql存储过程
最近写的一个Mysql存储过程
CREATE DEFINER=`root`@`%PROCEDURE `getcount`()
最近写的一个Mysql存储过程
BEGIN
最近写的一个Mysql存储过程
set @ok=1;
最近写的一个Mysql存储过程
set @i =1;
最近写的一个Mysql存储过程
set @zcid=0;
最近写的一个Mysql存储过程
select count(*into @ok from uch_zcount;
最近写的一个Mysql存储过程
最近写的一个Mysql存储过程
CREATE TEMPORARY TABLE tmp_tablezz (    
最近写的一个Mysql存储过程rowid 
bigint auto_increment primary key
最近写的一个Mysql存储过程zcbigint);
最近写的一个Mysql存储过程
最近写的一个Mysql存储过程
insert into tmp_tablezz (zcid) select zcid from uch_zcount order by total desc;
最近写的一个Mysql存储过程    
while @i <@ok+1 do 
最近写的一个Mysql存储过程    
update uch_zcount set heronum = @i where zcid= (select zcid from tmp_tablezz where rowid =@i);
最近写的一个Mysql存储过程
最近写的一个Mysql存储过程    
set @i=@i+1;
最近写的一个Mysql存储过程    
end while;
最近写的一个Mysql存储过程
最近写的一个Mysql存储过程
drop table tmp_tablezz;
最近写的一个Mysql存储过程
END$$
最近写的一个Mysql存储过程
最近写的一个Mysql存储过程DELIMITER ;$$

        肯定有更好的方法......... MYSQL还是不熟地...

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-10
  • 2021-11-04
  • 2021-04-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-17
  • 2021-06-20
  • 2021-11-27
  • 2022-02-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案