例子:
SET @ranking=0; select *,@ranking:[email protected]+1 AS `ranking` from table ORDER BY `members` DESC;
1. 先给用户变量 @ranking 赋值,mysql中用户变量以@开头,不用事先申明;
2. 然后按照某字段排序,返回字段中增加 如下代码:
@ranking:[email protected]+1
这样查询的结果中就包含 ranking 字段,表示当前排名。
遇到的问题:
1. 执行语句提示语法错误,分开执行就不会出错。
2. 数据分页
SET @ranking=当前第几页 * 每页数量;
3. 某条记录的排名
SET @ranking=0; select * from (select *,@ranking:[email protected]+1 AS `ranking` from table ORDER BY `members` DESC) as result where result.id = 17;
以上均为优化;
时间: 2024-10-09 07:33:41