mysql制作排⾏榜_mysql实现排⾏榜
博主新⼈⼀枚,⼤家可以提出⾃⼰的宝贵意见。
下来我们进⼊正题。
前两天在给app写接⼝时,需要实现⼀个排⾏榜的业务。当然我们⾸先要了解排⾏榜的业务需求是什么,其次才是接⼝实现,不能像我⼀样,⾛了不少的弯路。
⼤家⾸先要了解接⼝的场景,再就是排⾏榜的规则,我们这⾥说的中国式排⾏榜。
排⾏榜总结了⼀下分为3种:
中国式排⾏:        ⾮中国式排⾏1:              ⾮中国式排⾏2:
1;                                  1;                                        1;
2;                                  2;                                        2;
2;                                  2;                                        3;
3;                                  4;                                        4;
3;                                  5;                                        5;
4;                                  5;                                        6;
5;                                  7;                                        7;
SELECT
user_id,
@position :=
IF (
@previous = good_bad_num,
@position,
@position + 1
) AS position ,@previous := good_bad_num
FROM
(
SELECT
user_id,
good_bad_num
FROM
v_praise_user
where office_id = everyoffice
ORDER BY
good_bad_num DESC
) d,
(
SELECT
@previous := - 1,
@position := 0
) AS s
其实SQL原理很简单,做过jsp页⾯的合并表格的都清楚,定义两个变量,⼀个控制状态,另⼀个进⾏业务。SELECT
user_id,
good_bad_num
FROM
v_praise_user
where office_id = everyoffice
mysql下载后的初次使用
ORDER BY
good_bad_num DESC
这段主要是对v_praise_user表的good_bad_num 倒序排列,获取结果集。
SELECT
@previous := - 1,
@position := 0
必要需要的初始化,如果不经⼼初始化,初次查询会出现错误。
IF (
@previous = good_bad_num,
@position,
@position + 1
)
这段sql是这个排序的核⼼,⼀个IF判断语句,结合变量使⽤,实现排⾏业务。
@定义⽤户变量,只能在mysql数据库端执⾏,所以需要在数据库端⽤function或者存储过程来进⾏调⽤。第⼀次写博⽂,望轻喷。
欢迎⼤家讨论。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。