您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL存储过程获取记录排名(一般用于投票系统)

2025/7/4 19:46:53发布25次查看
mysql存储过程获取记录排名(一般用于投票系统) 原理 计算当前学校的票数,暂且记作a 计算票数大于自己的学校数目,暂且记作b,如果b=0,则自己票数排名第一 计算票数小于自己的学校数目,暂且记作c,如果c=0,则自己票数排名最后 如果b!=0c!=0,那么b+c就是
mysql存储过程获取记录排名(一般用于投票系统)
原理
计算当前学校的票数,暂且记作a
计算票数大于自己的学校数目,暂且记作b,如果b=0,则自己票数排名第一
计算票数小于自己的学校数目,暂且记作c,如果c=0,则自己票数排名最后
如果b != 0 && c != 0,那么b+c就是自己的票数排名 create procedure `get_rank`(in `school` int)beginset @votes = (select count(tcl_vote.vote_id) as counts from tcl_works left join tcl_vote on tcl_vote.works_id = tcl_works.works_id where tcl_works.school_id=school);set @gt = (selectcount(*)from(selecttcl_works.school_id,count(tcl_vote.vote_id) as votesfromtcl_worksleft join tcl_vote on tcl_vote.works_id = tcl_works.works_idgroup bytcl_works.school_idhavingvotes > @votesorder byvotes desc)as xxx);if @gt = 0thenset @rank = 1;select @rank as rank;elseset @lt = (selectcount(*)from(selecttcl_works.school_id,count(tcl_vote.vote_id) as votesfromtcl_worksleft join tcl_vote on tcl_vote.works_id = tcl_works.works_idgroup bytcl_works.school_idhavingvotes < @votesorder byvotes desc)as xxx);if @lt = 0thenset @rank =(select count(*) from tcl_school limit 1);select @rank as rank;elseset @rank = (@gt+@lt);select @rank as rank;end if;end if;end;call get_rank(1)
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product