编程式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就写这样的一个入门案例了,如果以后在开发中遇到类似的问题,还会补在这里的
浙公网安备 33010602011771号