最近寫的一個Mysql預存程序

來源:互聯網
上載者:User

  
       停了半天的電,看了半天的<老子>,然後......
        
       (思緒飛弛.....)

       發現像熱門排行榜更新之類的應用,還是用預存程序舒服,一個叫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還是不熟地...

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.