mysql 並列排名

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xinsixian.caiyi.dao.ext.PointRecordExtMapper">
    <select id="selectAddPointRankOnActivity" resultType="com.xinsixian.caiyi.pojo.ext.UserPointRankVO">
        select * from (
        select
        CASE
        WHEN @point = temp.point THEN @rownum
        WHEN @point := temp.point THEN @rownum := @rownum + 1
        WHEN @point = 0 THEN @rownum := @rownum + 1
        END AS rank,
        temp.* from (
        select ifnull(sum(amount),0) point ,user_id userId ,cu.nick_name nickName from caiyi_point_record cpr
        left join caiyi_user cu on cpr.user_id =cu.id
        <where>
            <if test="activityStartTime !=null">
                and cpr.create_time &gt;= #{activityStartTime}
            </if>
            <if test="activityEndTime !=null">
                and cpr.create_time &lt;= #{activityEndTime}
            </if>
        </where>
        group by cpr.user_id
        order by point desc
        <if test="activitySortCount !=null and activitySortCount !='' ">
            limit ${activitySortCount}
        </if>
        ) temp ,(select @rownum:=0,@point :=null ) d) temp1
        <where>
            <if test="userId !=null">
                temp1.userId=#{userId}
            </if>
        </where>
    </select>

</mapper>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章