MySql 统计排名


例子:

SET @ranking=0;

select *,@ranking:=@ranking+1 AS `ranking` from table ORDER BY `members` DESC;

1. 先给用户变量 @ranking 赋值,mysql中用户变量以@开头,不用事先申明;

2. 然后按照某字段排序,返回字段中增加 如下代码:

@ranking:=@ranking+1

这样查询的结果中就包含 ranking 字段,表示当前排名。

遇到的问题:

    1. 执行语句提示语法错误,分开执行就不会出错。

    2. 数据分页

SET @ranking=当前第几页 * 每页数量;

  3. 某条记录的排名

SET @ranking=0;

select * from (select *,@ranking:=@ranking+1 AS `ranking` from table ORDER BY `members` DESC) as result where result.id = 17;

以上均为优化;



你可能感兴趣的:(sql;mysql)