项目场景:
应项目经理和前端的要求,为MySQL语句添加排名字段
解决方案:
有以下两种解决方案:
下面是一个示例表的数据:
第一种:
然后我们要根据 Roll_No 字段进行排序并给出排名,我们首先必须定义一个初始值为0的变量,然后在查询结果中使用这个变量。
如下面的代码:
SET @counter=0;
SELECT @counter:=@counter+1 AS Rank,LastName,Roll_no as Roll FROM Students ORDER BY Roll_no ASC ;
执行该语句的结果如下:
第二种:用一条sql搞定
SQL代码:
--也就是把临时变量, 放在from 子句里.
SELECT @counter:=@counter+1 AS Rank,LastName,Roll_no as Roll FROM Students,(SELECT @counter:=0) AS t
ORDER BY Roll_no ASC;
不用临时变量
SELECT
(SELECT COUNT(ROLL_NO) FROM Students WHERE s.ROLL_NO <= ROLL_NO) AS Rank,
s.LastName, s.Roll_no AS Roll
FROM Students s
ORDER BY s.Roll_no ASC