前言:
现时各位老铁们对“sql查排名”大约比较关注,各位老铁们都需要了解一些“sql查排名”的相关内容。那么小编同时在网上搜集了一些关于“sql查排名””的相关资讯,希望兄弟们能喜欢,朋友们快快来了解一下吧!今天主要与大家分享的是MySQL数据排名与指定条件数据排名的获取,数据的排名在我们做用户的排序或者其它排序的时候是比较常见的,当然也可以通过其它处理方式来进行数据排名的计算。这里我们主要与大家分享的是MySQl中的SQL语句的排名处理
现有一个发帖统计表结构:
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` = '王五';
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #sql查排名