mysql存储过程

DELIMITER $$

DROP PROCEDURE IF EXISTS `lekan`.`UpdateVideoStats` $$
CREATE DEFINER=`root`@`%` PROCEDURE `UpdateVideoStats`()
begin
     declare done int DEFAULT 0;
    declare vId bigint ;
    declare tNum int;
    declare cur1 cursor for
    select videoId from video where parentId=0 and status=2 ;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

    open cur1;
    repeat
        fetch cur1 into vId;
        select count(v.videoId) into tNum from video_stats v where v.videoId=vId;
        if tNum=0 then
                insert into video_stats(videoId,hits,collect,score,comment,scoreNum,recommend ) values(vId,0,0,0,0,0,0 );
        end if;
        update video_stats v set v.score =(select IFNULL((select ROUND(avg(vs.userScore),1) from user_video_score vs where  vs.videoId=vId),0)) where v.videoId=vId;
        update video_stats v set v.hits = (select count(uv.videoId )  from USER_WATCHED_VIDEO uv where  uv.videoId=vId ) where v.videoId=vId;
        update video_stats v set v.collect= ( select  count(uv.videoId) from USER_COLLECTED_VIDEO  uv where uv.videoId=vId) where v.videoId=vId;
        update video_stats v set v.scoreNum = (select count(vs.videoId) from user_video_score vs where  vs.videoId=vId) where v.videoId=vId;
        update video_stats v set v.comment=(select count(vc.commentId) from VIDEO_COMMENT vc where vc.videoId=vId) where v.videoId=vId;
    until done end repeat;
    close cur1;
end $$

DELIMITER ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值