MySQL5.7实现分组排序

文章目录


前言

`

MySQL5.7版本没有row_number()over()函数,MySQL8以上版本才有,但是MySql5.7安装的版本较多,在5.7如何进行排序分组。


一、准备数据

sql 复制代码
 CREATE TABLE POSTS(POST_ID INT,
				   USER_ID INT, -- 用户ID
				   CATEGORY_ID INT,-- 分类ID
				   POST_TITLE VARCHAR(400), 
				   CREATE_TIME DATE, -- 创建时间
				   LAST_EDIT_TIME DATE, -- 最后编辑时间
				   VIEW_COUNT INT,-- 访问量
				   REPLY_COUNT INT -- 回复量
				   );
				  
	
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(1,1,1,'标题1',now(),now(),100,400);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(2,1,1,'标题2',now(),now(),200,300);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(3,2,1,'标题3',now(),now(),300,200);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(4,2,1,'标题4',now(),now(),400,100);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(5,2,1,'标题5',now(),now(),500,100);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(6,1,2,'标题4',now(),now(),600,100);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(7,2,2,'标题5',now(),now(),700,100);

二、查询

根据查询各个分类的访问量的排名

sql 复制代码
SELECT A.*,@last :=IF(@FIRST = A.CATEGORY_ID, @last + 1, 1 ) AS rn, @FIRST := A.CATEGORY_ID 
FROM POSTS A,(SELECT @last := 0, @FIRST := NULL ) B
ORDER BY A.CATEGORY_ID,VIEW_COUNT DESC;
相关推荐
2501_9411120732 分钟前
深入理解Python的if __name__ == ‘__main__‘
jvm·数据库·python
2501_9411120534 分钟前
Python Lambda(匿名函数):简洁之道
jvm·数据库·python
合作小小程序员小小店1 小时前
web网页开发,在线短视频管理系统,基于Idea,html,css,jQuery,java,springboot,mysql。
java·前端·spring boot·mysql·vue·intellij-idea
猿小喵1 小时前
浅谈MySQL主从复制
数据库·mysql
_Minato_1 小时前
数据库知识整理——SQL访问控制
数据库
BullSmall1 小时前
高斯数据库 (GaussDB) 使用指南
数据库·gaussdb
马克学长1 小时前
SSM旅游管理系统3ohx4(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·旅游管理系统·ssm 框架
朝新_1 小时前
Spring事务和事务传播机制
数据库·后端·sql·spring·javaee
A***27951 小时前
后端服务限流配置,Spring Cloud Gateway
java·运维·数据库
Dxy12393102161 小时前
MySQL如何修改最大连接数
数据库·mysql