优秀的编程知识分享平台

网站首页 > 技术文章 正文

MYSQL数据排名与指定数据排名获取

nanyue 2024-07-20 00:12:10 技术文章 6 ℃

今天主要与大家分享的是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` = '王五';
最近发表
标签列表