编程式SQL

首先抛出问题,如果我有下面一张表,我需要将所有人的按照门派进行区分,在每个门派中按照年龄进行排序,最后会显示该角色在门派中的年龄排名,我要怎么做?

 

首先呢,将所有人进行门派区分

select *

from t_emp

order by deptId;

其次呢,再将门派区分后的人按照年龄倒序

select *

from t_emp

order by deptId,age desc;

第一次对部门排序,相同部门会归类到一起显示,再对年龄降序,这样就在第一次排序的基础上再次排序

通过前两步我们只解决了排序归类,如何将每个人物在门派中的年龄级别显示出来呢,这就需要设置变量并进行判断显示了

set @rank := 1

set @lastdid := -1

select * 

from t_emp, if(@lastdid = deptId,@rank := @rank+1,@rank :=1) rank,@lastdid=deptId lastdid

order by deptId,age desc;

首先设置排名变量set @rank := 1再设置上一个部门id变量set @lastdid := -1(上来就设置一个没有的),通过if判断部门id是否等于上一个部门id

如果相同则证明同一个门派,那么rank+1即可,如果不相同则rank设置为1 即可

 好了,代码式sql就写这样的一个入门案例了,如果以后在开发中遇到类似的问题,还会补在这里的

posted @ 2021-11-12 23:12  阳台牧羊  阅读(48)  评论(0)    收藏  举报