现有一个发帖统计表构造:
CREATE TABLE `answers`.`posting_static` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(100) NULL DEFAULT '', `post` int(11) NULL DEFAULT 0, `created_at` timestamp NULL, `updated_at` datetime NULL, PRIMARY KEY (`id`));
数据实示例:
我们要取得全部用户的发帖量的排行,怎么进行捏?

首先我们须要对用户的发帖量进行排序,对排序后的结果进行编号(也可以先查询后排序再编号),这个编号便是我们须要的排名,那么这个编号怎么编呢?
在Mysql中我们可以借助 @rownum 来实现,
@rownum := @rownum + 1 中 := 是赋值的浸染,意思是先实行@rownum + 1,然后把值赋给@rownum。
(SELECT @rownum := 0) r 这句话的意思是设置rownum字段的初始值为0,即编号从1开始。
所有数据实现SQL:
SELECT a., @rownum := @rownum + 1 AS rank FROM (SELECT @rownum := 0) r, `posting_static` AS a ORDER BY a.post DESC;
按条件获取获取单个用户的排名:
SELECT b. SELECT FROM(SELECT a., @rownum := @rownum + 1 AS rank FROM (SELECT @rownum := 0) r, `posting_static` AS a ORDER BY a.post DESC) as b where b.`username` = '王五';