mybatis实现排行榜SQL代码
·
mql如下
SELECT b.*, (@curRand := @curRand + 1) AS rank FROM (
SELECT trcp.user_id as userId,count( t.id ) AS finishNum,u.HEAD_PORTRAIT AS headPortrait,u.name as userName
FROM osi_task AS t
LEFT JOIN osi_task_relate_assign_person AS trcp ON t.ID = trcp.task_id
LEFT JOIN osi_user_info AS u ON trcp.user_id = u.ID
<where>
trcp.state = #{state,jdbcType=INTEGER}
AND t.IS_DEL = 2 AND u.type = #{userType,jdbcType=INTEGER}
</where>
GROUP BY trcp.user_id
ORDER BY finishNum DESC
<if test="state != null">
<if test="state == 2">
,t.finish_time DESC
</if>
<if test="state == 3">
,t.end_time DESC
</if>
</if>
) as b ,(SELECT @curRand := 0) AS c
<if test="limit != null">
limit #{limit,jdbcType=INTEGER}
</if>
其中rank是排名,可以自定义条件。
查询某个人的排名:
select * from (
SELECT b.*, (@curRand := @curRand + 1) AS rank FROM (
SELECT trcp.user_id,count( t.id ) AS myNum
FROM osi_task AS t
LEFT JOIN osi_task_relate_assign_person AS trcp ON t.ID = trcp.task_id
LEFT JOIN osi_user_info AS u ON trcp.user_id = u.ID
WHERE trcp.state = #{state,jdbcType=INTEGER}
AND t.IS_DEL = 2 AND u.type = 6
GROUP BY trcp.user_id
ORDER BY myNum DESC
) as b ,(SELECT @curRand := 0) AS c ) as d
<where>
d.user_id = #{user_id,jdbcType=VARCHAR}
</where>
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)